我有一台服务器在8080端口上运行Spring引导应用程序,我想将其连接到使用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进行连接,连接也能正常工作并检索数据。
这个解决方案非常愚蠢。
我忘记将someserver.som
添加到Angular JWT的允许域列表中。
它现在按预期工作