关于springboot的跨域配置问题的解决方案

 更新时间:2023年07月10日 11:07:58   投稿:caobin  
这篇文章主要介绍了关于springboot的跨域配置问题,处理filter,spring security等过滤器跨域问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

传统跨域是springboot中CorsRegistry添加添加处理的CorsMapping,这种跨域处理可以处理controller的请求。

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    static final String[] ORIGINS = new String[] { "GET", "POST", "PUT", "DELETE" };
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 所有的当前站点的请求地址,都支持跨域访问。
        registry.addMapping("/**")
                // 所有的外部域都可跨域访问
                .allowedOrigins("*")
                // 是否支持跨域用户凭证
                .allowCredentials(true)
                // 当前站点支持的跨域请求类型是什么
                .allowedMethods(ORIGINS)
                // 超时时长设置为1小时,时间单位是秒。
                .maxAge(3600);
    }
}

但如果遇到spring boot集成spring security的时候,登录时处理是在filter中的,传统的跨域没有办法处理,这时候我们要采用一种新的实现方案:基于filter的跨域实现。

基于filter实现可以处理filter中的跨域问题,这里原理很简单,需要注意是要设置CorsFilter的优先级:Ordered.HIGHEST_PRECEDENCE(加载到过滤器链最前面!!!)

@Configuration
public class CorsConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.addExposedHeader("*");
        return corsConfiguration;
    }
    @Bean
    public FilterRegistrationBean<CorsFilter> corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 对接口配置跨域设置
        source.registerCorsConfiguration("/**", buildConfig());
        //有多个filter时此处设置改CorsFilter的优先执行顺序
        FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source));
        bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
        return bean;
    }
}

经过测试,这种处理方法可以轻松应对springboot的跨域问题。

到此这篇关于关于springboot的跨域配置问题的解决方案的文章就介绍到这了,更多相关springboot跨域配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot整合MongoDB完成增删改查分页查询方式

    SpringBoot整合MongoDB完成增删改查分页查询方式

    本文介绍了如何在SpringBoot中整合MongoDB,包括依赖导入、连接配置、实体类创建、增删改查、分页查询、时间范围查询以及基本操作的调试
    2025-11-11
  • Java根据坐标经纬度计算两点距离5种方法及校验经纬度是否在圆/多边形区域内的算法推荐

    Java根据坐标经纬度计算两点距离5种方法及校验经纬度是否在圆/多边形区域内的算法推荐

    在项目开发过程中需要根据两地经纬度坐标计算两地间距离,下面这篇文章主要给大家介绍了关于Java根据坐标经纬度计算两点距离5种方法以及校验经纬度是否在圆/多边形区域内的算法推荐,需要的朋友可以参考下
    2023-12-12
  • Java基础之java泛型通配符详解

    Java基础之java泛型通配符详解

    Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型,今天通过本文给大家介绍java泛型通配符的相关知识,感兴趣的朋友一起看看吧
    2021-07-07
  • java中main函数你知道多少

    java中main函数你知道多少

    大家好,本篇文章主要讲的是java中main函数你知道多少,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • SQL注入攻击及其在SpringBoot中使用MyBatisPlus的防范策略的方法

    SQL注入攻击及其在SpringBoot中使用MyBatisPlus的防范策略的方法

    本文介绍了如何使用SpringBoot整合JavaDeeplearning4j构建一个文本摘要生成系统,该系统能够自动从长篇文本中提取关键信息,生成简洁的摘要,帮助用户快速了解文本的主要内容,系统使用LSTM神经网络模型进行训练,并通过SpringBoot创建RESTful API进行调用
    2024-11-11
  • SpringCloud手写Ribbon实现负载均衡

    SpringCloud手写Ribbon实现负载均衡

    这篇文章主要介绍了SpringCloud手写Ribbon实现负载均衡的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

    SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

    MyBatis-Plus 是 MyBatis 的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方式,包括常规的 SQL 查询、Lambda Query 查询、分页查询、条件查询等,在本篇博客中,我们将详细讲解如何使用 MyBatis-Plus 的各种查询方式,需要的朋友可以参考下
    2025-01-01
  • Spring MVC 更灵活的控制 json 返回问题(自定义过滤字段)

    Spring MVC 更灵活的控制 json 返回问题(自定义过滤字段)

    本篇文章主要介绍了Spring MVC 更灵活的控制 json 返回问题(自定义过滤字段),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • Mybatis如何传入多个参数的实现代码

    Mybatis如何传入多个参数的实现代码

    这篇文章主要介绍了Mybatis如何传入多个参数的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • java如何生成登录随机验证码

    java如何生成登录随机验证码

    这篇文章主要为大家详细介绍了java如何生成登录随机验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12

最新评论