springboot下遇到的跨域问题
后端跨域处理
springboot 项目
- 注解
@CrossOrigin
- 实现
WebMvcConfigurer
接口中addCorsMappings(CorsRegistry registry)
方法 - 配置
CorsFilter
- filter 过滤器
使用注意
-
都可以单独使用, 全部配置可能会导致不生效的问题
-
addCorsMappings方法
@Override
public void addCorsMappings(CorsRegistry registry) {
registry
//允许跨域的路径
.addMapping("/**")
//允许跨域的path
.allowedHeaders("*")
//跨域
.allowedOriginPatterns("*")
//允许凭证
.allowCredentials(true)
//允许通过方法
.allowedMethods("GET","POST","DELETE","PUT","PATCH","OPTIONS","HEAD")
//跨域的生存期
.maxAge(SECOND*24L);
}
allowedOriginPatterns("") 代替allowedOrigins("")
-
CorsFilter 类似于(2) ,也是全局跨域一种处理
-
基于过滤器filter也可以, 设置response响应
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
response.setHeader("Access-Control-Expose-Headers", "content-disposition");