博客
关于我
SpringBoot中重写addCorsMapping解决跨域以及提示list them explicitly or consider using “allowedOriginPatterns“ in
阅读量:800 次
发布时间:2023-02-26

本文共 1930 字,大约阅读时间需要 6 分钟。

在Spring Boot项目中,解决跨域问题是一个常见的需求。通过重写WebMvcConfigureraddCORSMapping方法,可以有效地处理跨域问题。然而,有时候在实际操作中可能会遇到一些特定的配置问题。

在前面的博客中,我们提到可以通过重写addCORSMapping方法来解决跨域问题。然而,在实际应用中可能会遇到以下错误提示:

When allowCredentials is true, allowedOrigins cannot contain th

这条错误提示的意思是,当允许传输敏感信息(allowCredentialstrue)时,allowedOrigins数组中不能包含某些特定值。这通常是因为浏览器对同一域名下的跨域请求有限制。

如果你在项目中使用了静态资源映射,并通过编写配置类实现了WebMvcConfigurer接口并重写了addResourceHandlers方法来配置静态资源路径,但仍然出现跨域问题,可能是因为静态资源和API的跨域配置不一致。这种情况下,你需要分别处理静态资源的CORS配置和API的CORS配置。

常见的解决方案:

  • WebMvcConfigurer中手动配置CORS:
  • @Override
    public void addCORSMapping() {
    super.addCORSMapping(new CorsConfigSource() {
    @Override
    publicCorsConfiguration getCorsConfiguration(String name) throwsNoSuchElementException {
    return newCorsConfiguration()
    .setAllowedOrigins(Arrays.asList("http://localhost:8080", "http://yourdomain.com"))
    .setAllowedMethods(Arrays.asList("GET", "POST", "PUT"))
    .setAllowCredentials(true);
    }
    });
    }
    1. 使用CORSFilter来处理CORS问题:Spring Boot中,可以通过添加CORSFilter来实现CORS配置。这种方法相比直接重写addCORSMapping方法更灵活。
    2. import org.springframework.boot.web.servlet.filter.CorsFilter;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      @Configuration
      public class WebConfig {
      @Bean
      public CorsFilter corsFilter() {
      return new CorsFilter();
      }
      }
      1. application.properties中手动配置:application.properties文件中,可以添加以下配置:
      2. spring.http.cors.enabled=true
        spring.http.cors.allowedOrigins=http://localhost:8080,http://yourdomain.com
        spring.http.cors.allowCredentials=true

        注意事项:

        • allowedOrigins的配置:

          • 如果你在开发环境中测试,通常会配置http://localhost:8080http://localhost:8081
          • 在生产环境中,需要根据实际需求配置对应的域名。
        • allowCredentials的配置:

          • 当你需要跨域请求包含敏感信息(如cookie、token等)时,需要设置allowCredentials=true
          • 在生产环境中,通常不建议在所有请求中都允许allowCredentials,而是根据具体需求进行配置。

        通过以上方法,你可以根据项目需求灵活配置跨域策略。如果仍然遇到问题,可以参考Spring Boot官方文档或相关技术博客,获取更详细的解决方案。

    转载地址:http://yjvfk.baihongyu.com/

    你可能感兴趣的文章
    PHP加速器eaccelerator导致php-fpm进程卡死原因分析
    查看>>
    PHP区分 企业微信浏览器 | 普通微信浏览器 | 其他浏览器
    查看>>
    php原生代码怎么连表查询,PHP tp5中使用原生sql查询代码实例
    查看>>
    PHP去掉转义符
    查看>>
    php去除字符串开头或末尾的字符(例如逗号)
    查看>>
    php反射api
    查看>>
    PHP反射ReflectionClass、ReflectionMethod 入门教程
    查看>>
    PHP反射机制
    查看>>
    php取当天的最后一秒_Docker快速搭建PHP开发环境详细教程
    查看>>
    php取绝对值
    查看>>
    PHP变量内容的获取
    查看>>
    php各种常用的算法
    查看>>
    php各种缓存策略对比
    查看>>
    RabbitMQ高级特性 - 消息分发(限流、负载均衡)
    查看>>
    php后台“爬虫”模拟登录第三方系统
    查看>>
    php后台的在控制器中就可以实现阅读数增加
    查看>>
    php命令行生成项目结构
    查看>>
    php命名空间
    查看>>
    PHP命名空间带来的干扰
    查看>>
    PHP和MySQL Web开发从新手到高手,第1天-搭建PHP开发环境
    查看>>