缺少' Access-Control-Allow-Origin'在使用Spring MVC和Boot的DELETE上

时间:2016-07-27 08:43:10

标签: spring rest spring-mvc spring-boot cors

我有一个非常奇怪的错误,我很确定我错过了一些相当简单的东西,但几个小时之后,我似乎无法接近溶液

我有一个REST端点,方法是DELETE,使用Spring MVC和Spring Boot构建。实现非常简单:

@RequestMapping(value = "/job/{id}", method = RequestMethod.DELETE)
public void deleteJob(@PathVariable("id") String id) {
    jobRepository.delete(id);
}

我用角度js用

来调用它
$http.delete(backendHost + 'job/' + id)

但是当我执行代码时,我得到了

  

XMLHttpRequest无法加载   http://localhost:8080/job/578b6e40d2823043482dbdf9。回应   预检请求未通过访问控制检查:否   '访问控制允许来源'标题出现在请求的上   资源。起源' http://localhost:3000'因此是不允许的   访问。响应的HTTP状态代码为403。

我的cors标头已设置并允许任何来源:

@Configuration
@EnableAutoConfiguration
@EnableWebMvc
@ComponentScan
public class Application {

    public static void main(String... args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedOrigins("*")
                        .allowedMethods("GET", "OPTIONS", "POST", "PUT", "DELETE");
            }
        };
    }
}

这只是delete方法的问题。它适用于任何其他方法。如果我将请求更改为GET而不是DELETE,则它可以正常工作。

此外,它仅在从我的angularjs客户端调用删除端点时失败。如果我从基于Web的休息客户端(如Postman)调用完全相同的端点,它可以正常工作。它迫使我设置allowedMethods,但如果我想要一切,我认为不需要设置它。

我确定我在这里遗漏了一些非常基本的东西。有什么想法吗?

0 个答案:

没有答案