Java Spring REST API CORS 不适用于通过 jQuery 和 Chrome 的 DELETE 请求

Posted

技术标签:

【中文标题】Java Spring REST API CORS 不适用于通过 jQuery 和 Chrome 的 DELETE 请求【英文标题】:Java Spring REST API CORS not working for DELETE requests via jQuery with Chrome 【发布时间】:2017-01-11 11:12:02 【问题描述】:

我正在创建一个使用 jQuery 编写的 Web 前端,它将 REST 请求发送到使用 Spring 框架用 Java 编写的 REST Web 服务。我在 CORS 请求中遇到了一个奇怪的错误。特别是,如果我使用 Safari,一切正常;相反,对于 Chrome,所有 DELETE 请求都会失败(GET 和 POST 请求在 Chrome 中也可以正常工作)。

我得到的错误是:

Response to preflight request doesn't pass access control check: No 
'Access-Control-Allow-Origin' header is present on the requested 
resource. Origin 'null' is therefore not allowed access. 
The response had HTTP status code 403.

当 Chrome 发出第一个 OPTIONS 请求时会发生这种情况。

我关于 CORS 的代码是:

@Configuration
@EnableWebMvc
public class CorsConfigurator extends WebMvcConfigurerAdapter 
    @Override
    public void addCorsMappings(CorsRegistry registry) 
        registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS");
    


@SpringBootApplication
public class App 

    public static void main( String[] args )
    
        SpringApplication.run(App.class, args);
    
    @Bean
    public WebMvcConfigurer corsConfigurer() 
        return new CorsConfigurator();
    


我还尝试将@CrossOrigin 注释添加到我的@RestController 中,但没有任何改变。有人知道如何解决这个问题吗?

谢谢你, 马可

【问题讨论】:

【参考方案1】:

我刚刚将@CrossOrigin 添加到控制器中的方法中,这解决了我的问题

【讨论】:

【参考方案2】:

我在 Spring Boot 应用程序中遇到了这个错误,我通过添加或启用如下 cors 功能解决了它

cors: 允许的来源:“http://localhost:8082” 允许的方法:“” 允许的标题:“” 暴露的标题:“授权,链接,X-Total-Count” 允许凭据:true 最大年龄:1800

【讨论】:

以上是关于Java Spring REST API CORS 不适用于通过 jQuery 和 Chrome 的 DELETE 请求的主要内容,如果未能解决你的问题,请参考以下文章

带有 Keycloak 的 Angular 和 Spring Boot REST API 的 CORS 问题

带有 Keycloak 的 Angular 和 Spring Boot REST API 的 CORS 问题

Apache Shiro 正在破坏我的 Spring Boot Rest API 的 CORS 配置

带有 Spring Security 核心和 CORS 插件的 grails REST API 不适用于 OPTIONS http 方法请求

REST API - CORS 问题

如何使用 Spring Java Mongo REST 应用程序配置 CORS?