springboot下遇到的跨域问题

后端跨域处理

springboot 项目

  1. 注解@CrossOrigin
  2. 实现WebMvcConfigurer接口中addCorsMappings(CorsRegistry registry)方法
  3. 配置 CorsFilter
  4. filter 过滤器

使用注意

  1. 都可以单独使用, 全部配置可能会导致不生效的问题

  2. 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("")

  1. CorsFilter 类似于(2) ,也是全局跨域一种处理

  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"); 
posted @ 2023-07-13 09:55  freedomlog  阅读(51)  评论(0编辑  收藏  举报