• Springboot 2.5.X框架解决跨域遇到的坑


    今天为了增加es支持,用了许久的springboot 2.1.8被我放弃,升级到了2.5.6版本,但随之而来还有跨域的坑。

    简单来说说跨域:

    1、什么叫跨域?

    当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同,这就是跨域。

    2、为什么会产生跨域?

    出于浏览器的同源策略限制。同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。

    跨域是我们前后端分离开发中经常会遇到的一个问题。了解什么叫跨域,为什么会产生跨域后,我们来看看如何解决跨域问题。

    先来说说2.1.8版本解决跨域的方法。直接贴代码了,配置类+跨域Bean

    @Configuration
    public class GlobalCorsConfig {    @Bean
        public CorsFilter corsFilter() {
            //1. 添加 CORS配置信息
            CorsConfiguration config = new CorsConfiguration();
            //放行哪些原始域
            config.addAllowedOrigin("*");
            //是否发送 Cookie
            config.setAllowCredentials(true);
            //放行哪些请求方式
            config.addAllowedMethod("*");
            //放行哪些原始请求头部信息
            config.addAllowedHeader("*");
    
            //暴露哪些头部信息
            //config.addExposedHeader("*");
            //2. 添加映射路径
            UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
            corsConfigurationSource.registerCorsConfiguration("/**",config);
            //3. 返回新的CorsFilter
            return new CorsFilter(corsConfigurationSource);
        }
    }

    但是当你升级到了2.5.6之后的版本就会遇到新的跨域,这个雷已经不能解决问题了

    所以赶紧去官方文档查看一下,找到了解决方案,在启动类下增加如下Bean,代码块如下

        @Bean
        public WebMvcConfigurer corsConfigurer() {
            return new WebMvcConfigurer() {
                @Override
                public void addCorsMappings(CorsRegistry registry) {
                    registry.addMapping("/**").allowCredentials(true).allowedOriginPatterns("*");
                }
            };
        }

    好了问题解决了,如果对你解决问题有帮助,请动动你的小手,点个赞。

    更多编程内容,请扫码关注《coder练习生》,如果觉得有用,也可赠送作者一杯咖啡

     

  • 相关阅读:
    Go-Zero定义API实战:探索API语法规范与最佳实践(五)
    数据血缘系列(3)—— 数据血缘可视化之美
    Java 异步和同步有什么不同呢?
    springboot整合mybatis实现增删改查
    真人陪聊解忧,暖心的虚拟恋人尽在烟雨树洞
    详解动态内存管理!
    华为云云耀云服务器L实例评测|Elasticsearch的可视化Kibana工具安装 & IK分词器的安装和使用
    【无标题】
    LeetCode算法动态规划—剑指 Offer 10- II. 青蛙跳台阶问题
    一、【redux】redux简介 mini版求和Demo
  • 原文地址:https://blog.csdn.net/ybb_ymm/article/details/125604334