我有一个小的Spring启动应用程序,并坚持使用此CORS问题
无法加载http://localhost:8093/trial/events/?_=1522319557789:' Access-Control-Allow-Origin'标头的值为' null'这不等于提供的原产地。起源' null'因此不允许访问。
遵循了Spring文档,这是我的配置:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter{
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
}
我从服务器获得200响应,但使用Access-Control-Allow-Origin:null。
因此Chrome正在抱怨上述错误。
尝试在Controller中手动设置标题,但现在我可以看到2个标题具有相同的名称。 Chrome再次抱怨多个标题名称相同。
不确定Spring将Access-Control-Allow-Origin配置为Null的位置 感谢任何帮助。谢谢!
答案 0 :(得分:2)
以endpoints.cors。*为前缀的Spring引导属性由Actuator使用,这就是为什么它不适用于MVC端点。
尝试以下代码段
registry.addMapping("/trial/**")
.allowedOrigins("http://localhost") // Add you arigins here ,to bypass all the origins you can put "*".
.allowedMethods("PUT", "DELETE","POST","GET") // add allowed methods here
.allowedHeaders("header1", "header2", "header3")// add allowed headers here
.exposedHeaders("header1", "header2") // add exposed headers here
.allowCredentials(false).maxAge(3600);
默认逻辑可以在类 org.springframework.web.cors.CorsConfiguration.java
中找到/**
* Set the origins to allow, e.g. {@code "http://domain1.com"}.
* <p>The special value {@code "*"} allows all domains.
* <p>By default this is not set.
*/
public void setAllowedOrigins(@Nullable List<String> allowedOrigins) {
this.allowedOrigins = (allowedOrigins != null ? new ArrayList<>(allowedOrigins) : null);
}
默认情况下,此设置未设置。您需要使用
显式设置它.allowedOrigins()