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. at org.springframework.web.cors.CorsConfiguration.validateAllowCredentials(CorsConfiguration.java:520) ~[spring-web-6.0.2.jar:6.0.2] java这个报错怎么解决
时间: 2024-04-03 20:33:34 浏览: 156
这个报错是由于Spring Web框架中的CORS(跨域资源共享)配置中出现了问题,具体是在设置`allowCredentials`属性为`true`时,如果`allowedOrigins`属性中包含了特殊值`*`,则无法将其设置为响应头中的`Access-Control-Allow-Origin`值,因为这个值是不能被设置为`*`的。
要解决这个问题,你需要根据报错信息中的建议,将`allowedOrigins`属性中的值从`*`改为明确指定的一组允许的域名,或者考虑使用`allowedOriginPatterns`属性来代替。例如:
```
@Configuration
@EnableWebMvc
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:8080", "https://example.com")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*")
.allowCredentials(true)
.maxAge(3600);
}
}
```
在这个示例中,我们使用了`allowedOrigins`属性指定了两个允许的域名,还设置了其他相关的CORS配置项。这样就可以解决这个报错了。
阅读全文