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");
}
};
}