控制台打印的错误信息:
When allowCredentials is true, allowedOrigins cannot contain the special value “*” since that cannot be set on the “Access-Control-Allow-Origin” response header. To allow credentials to a set of origins, list them explicitly or consider using “allowedOriginPatterns” instead.
当项目使用前后端分离开发时,后端已经对跨域问题进行了处理,但是还是报这个错,解决办法是把 .allowedOrigin(“*”) 修改为 .allowedOriginPattern(“*”);
修改前:
/**
* 解决跨域问题
* 因为是前后端分离项目,所以跨域问题是不可避免的
* 直接在后台进行全局跨域处理
*/
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")// 允许向该服务器提交请求的URI,*表示全部允许,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin
.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")// 允许请求的方法
.allowCredentials(true)
.maxAge(3600)// // 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
.allowedHeaders("*");// 允许访问的头信息,*表示全部
}
}
修改后:
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
.allowCredentials(true)
.maxAge(3600)
.allowedHeaders("*");
}
}