关于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跨域配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • javaweb 项目初始配置的方法步骤

    javaweb 项目初始配置的方法步骤

    本文主要介绍了javaweb 项目初始配置的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Java Hutool工具实现验证码生成及Excel文件的导入和导出

    Java Hutool工具实现验证码生成及Excel文件的导入和导出

    Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,本文主要介绍了使用Hutool工具实现验证码生成和excel文件的导入、导出,需要的朋友可参考一下
    2021-11-11
  • MyBatis-Flex+ShardingSphere-JDBC多数据源分库分表实现

    MyBatis-Flex+ShardingSphere-JDBC多数据源分库分表实现

    本文介绍了使用MyBatis-Flex和ShardingSphere-JDBC实现多数据源分库分表的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • 一文详解Maven的setting文件

    一文详解Maven的setting文件

    maven 是目前java 常见的一款包管理工具,通过 maven 我们可以很方便的对项目进行编译、打包、部署等操作,本文将详细带大家了解一下Maven setting文件,需要的朋友可以参考下
    2024-02-02
  • Spring注解开发生命周期原理解析

    Spring注解开发生命周期原理解析

    这篇文章主要介绍了Spring注解开发生命周期原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 详解Spring 中如何控制2个bean中的初始化顺序

    详解Spring 中如何控制2个bean中的初始化顺序

    本篇文章主要介绍了Spring 中如何控制2个bean中的初始化顺序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 详解Java线程编程中的volatile关键字的作用

    详解Java线程编程中的volatile关键字的作用

    这篇文章主要介绍了Java线程编程中的volatile关键字的作用,针对其禁止进行指令重排序和读写内存方面着重讲解,需要的朋友可以参考下
    2015-12-12
  • 解决JDK21中用不了TimeUtild问题

    解决JDK21中用不了TimeUtild问题

    在使用TimeUtil时,可能因为IDE版本不兼容导致问题,升级IDEA到2023.2以上版本可解决此问题,详细步骤可以通过评论区索取安装包或直接从官网下载,分享个人经验,希望对大家有帮助
    2024-10-10
  • Java通过try释放资源的方法

    Java通过try释放资源的方法

    这篇文章主要介绍了Java通过try释放资源的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Java多线程批量数据导入的方法详解

    Java多线程批量数据导入的方法详解

    这篇文章主要介绍了Java多线程批量数据导入的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面小编和大家来一起学习下吧
    2019-06-06

最新评论