博客
关于我
SpringBoot中重写addCorsMapping解决跨域以及提示list them explicitly or consider using “allowedOriginPatterns“ in
阅读量:795 次
发布时间: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/

    你可能感兴趣的文章
    OpenMMLab | 【全网首发】Llama 3 微调项目实践与教程(XTuner 版)
    查看>>
    OpenMMLab | 面向多样应用需求,书生·浦语2.5开源超轻量、高性能多种参数版本
    查看>>
    OpenMV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    OpenObserve云原生可观测平台本地Docker部署与远程访问实战教程
    查看>>
    OpenPPL PPQ量化(4):计算图的切分和调度 源码剖析
    查看>>
    OpenPPL PPQ量化(5):执行引擎 源码剖析
    查看>>
    openpyxl 模块的使用
    查看>>
    Openresty框架入门详解
    查看>>
    OpenResty(1):openresty介绍
    查看>>
    OpenResty(2):OpenResty开发环境搭建
    查看>>
    openshift搭建Istio企业级实战
    查看>>
    Openstack 之 网络设置静态IP地址
    查看>>
    OpenStack 搭建私有云主机实战(附OpenStack实验环境)
    查看>>
    OpenStack 综合服务详解
    查看>>
    OpenStack 网络服务Neutron详解
    查看>>
    Openstack 网络管理企业级实战
    查看>>
    Openstack(两控制节点+四计算节点)-1
    查看>>
    openstack--memecache
    查看>>
    openstack-keystone安装权限报错问题
    查看>>
    openstack【Kilo】汇总:包括20英文文档、各个组件新增功能及Kilo版部署
    查看>>