Spring Boot 通过 application.properties 启用 CORS

新手上路,请多包涵

我使用由您的实体类自动启动的 Spring Boot API RESTful。我正在从前端网络应用程序中使用这个 apiRest,但它给了我这个错误:

请求的资源上不存在“Access-Control-Allow-Origin”标头

我正在使用 此处 指定的申请属性设置 CORS 配置。

我的基本配置是:

 endpoints.cors.allow-credentials=true
endpoints.cors.allowed-origins=*
endpoints.cors.allowed-methods=*
endpoints.cors.allowed-headers=*

我在这些变量中尝试了不同的组合,但仍然无法正常工作。有任何想法吗?

原文由 user2992476 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 488
2 个回答

我自己得到了答案:

只需将其添加到 application.java

   @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/greeting-javaconfig").allowedOrigins("http://localhost:9000");
            }
        };
    }

原文由 user2992476 发布,翻译遵循 CC BY-SA 4.0 许可协议

这个在 Spring 官方文档中不是很清楚,很容易被 Spring Boot 官方文档 误导。

事实上,您 不能 使用 application.properties 文件设置全局 CORS 配置。您必须按照 Spring Framework DocumentationCors 章节 所述 使用 JavaConfig。

只需在 --- 实现 WebMvcConfigurer @Configuration 的类上使用 @EnableWebMvc 注释并覆盖 addCorsMappings 方法如下:

 @Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
            .allowedOrigins("http://domain2.com")
            .allowedMethods("PUT", "DELETE")
            .allowedHeaders("header1", "header2", "header3")
            .exposedHeaders("header1", "header2")
            .allowCredentials(false).maxAge(3600);
    }
}

原文由 Gokay 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进