SpringBoot的跨域配置没有效果?

1.背景:在项目开发中采用了前后端分离的模式,其中前端用的vue+axios,后端用的springboot。项目开发完成后想要上线,于是前端选择部署到Nginx,整个项目用docker-compose打包到Docker里运行。
2.问题:前端部署到Nginx后(均使用Nginx默认配置,没有修改),使用axios访问后端出现跨域错误,于是按照网上的说法,在SpringBoot后台添加跨域配置:

@Configuration

public class CorsConfig {

//配置跨域Filter

@Bean

public CorsFilter corsFilter(){

UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

CorsConfiguration corsConfiguration = new CorsConfiguration();

corsConfiguration.addAllowedOriginPattern("*"); //允许任何域名访问

corsConfiguration.addAllowedHeader("*"); //允许任何请求头访问

corsConfiguration.addAllowedMethod("*"); //允许任何方法访问

corsConfiguration.setAllowCredentials(true);//是否允许客户端携带验证信息,例如 cookie 之类的

source.registerCorsConfiguration("/**",corsConfiguration);//处理所有请求的跨域配置

return new CorsFilter(source);

}

}

3.结果:重启项目后,运行仍然报跨域错误,无法访问接口,然后尝试了添加CrossOrigin注解也无效,这是什么原因呢?是Nginx的问题吗,还是说前后端都要配置跨域才行,前端小白求解!!


回答:

SpringBoot的跨域配置没有效果?

具体原因建议看浏览器的控制台报错结果是什么。

但首先这里是有问题的,AllowCredentials 是 true 时,AllowedOrigin 是不允许为通配符 * 的,你必须指定允许的域(即协议+域名/IP+端口,采用协议默认端口时端口可省略)。你可以写在配置里注入进去,或者从请求上下文里直接读取当前客户端的域。

以上是 SpringBoot的跨域配置没有效果? 的全部内容, 来源链接: utcz.com/p/936346.html

回到顶部