我有一個在埠 8080 上運行 Spring Boot 應用程式的服務器,我想將它連接到使用 Ionic 和 Cordova 構建的 Android 應用程式。
還有一個使用 Angular 13 構建的 Web 應用程式,它是 Android 應用程式的基礎。
在使用 HTTPS 連接(使用 Apache 代理模式從埠 443 重定向到埠 8080)時,我嘗試使用 POST 方法登錄一切正常,但任何 GET 請求都被阻止并出現錯誤 403。
但是,如果我僅使用埠 8080 直接使用 HTTP 進行連接,它就可以作業。
我的 CORS 設定:
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source =
new UrlBasedCorsConfigurationSource();
var config = new CorsConfiguration();
config.setAllowedOrigins(Arrays.asList("*"));
config.setAllowedMethods(Arrays.asList("*"));
config.setAllowedHeaders(Arrays.asList("*"));
config.setAllowCredentials(false);
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
和我在 apache 中的主機配置:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName www.someserver.som
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.someserver.som [OR]
RewriteCond %{SERVER_NAME} =someserver.som
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
和我的代理模式:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName www.someserver.som
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias softcare.sy
SSLCertificateFile /etc/letsencrypt/live/softcare.sy/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/softcare.sy/privkey.pem
</VirtualHost>
</IfModule>
值得注意的是,當通過 Insomnia 進行連接時,即使使用 SSL 連接,連接也能正常作業并檢索資料。
uj5u.com熱心網友回復:
解決方案被證明是非常愚蠢的。
我忘了添加someserver.som
到 Angular JWT 的允許域串列中。
它現在按預期作業
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504809.html