Spring Boot配置跨域后PUT和DELETE请求自动变成OPTION请求的解决方案

在配置前后端分离的项目时,前端和后端都需要对数据跨域做相应的处理

Spring Boot可以通过配置的方式进行处理,重写WebMvcConfigurer 的 addCorsMappings方法,将mapping配置为“/**”,就可以解决通常情况下的跨域问题了

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
            	
                registry.addMapping("/**");
            }
        };
    }

但是Spring Boot默认对请求方法只支持GET、HEAD和POST方式,如果采用其他方式的请求,如DELETE,PUT等,会变成option请求。为了满足标准的Restful API,需要对默认的进行扩充,代码如下

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedOrigins("*") //允许所有的url
                        .allowCredentials(true)
                        .allowedMethods("GET", "POST", "PUT", "DELETE");
            }
        };
    }