千家信息网

SpringBoot开发中如何处理跨域请求CORS

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章为大家展示了SpringBoot开发中如何处理跨域请求CORS,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。CORS(Cross-Origin Res
千家信息网最后更新 2026年11月01日SpringBoot开发中如何处理跨域请求CORS

本篇文章为大家展示了SpringBoot开发中如何处理跨域请求CORS,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

CORS(Cross-Origin Resource Sharing)"跨域资源共享",是一个W3C标准,它允许浏览器向跨域服务器发送Ajax请求,打破了Ajax只能访问本站内的资源限制。

在前后分离的架构下,我们经常会遇到跨域CORS问题,在浏览器上的表现就是出现如下一段错误提示:No 'Access-Control-Allow-Origin' header is present on the requested resource.

下面看一下如何让你的SpringBoot项目支持CORS跨域。

SpringBoot处理跨域

在SpringBoot后端处理跨域比较简单,只需要在项目中添加如下一个配置类即可:

/** * Spring Boot 2.0 解决跨域问题 * @Author javadaily */@Configurationpublic class WebMvcConfiguration implements WebMvcConfigurer { @Bean public CorsFilter corsFilter() {  final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();  final CorsConfiguration corsConfiguration = new CorsConfiguration();  /* 是否允许请求带有验证信息 */  corsConfiguration.setAllowCredentials(true);  /* 允许访问的客户端域名 */  corsConfiguration.addAllowedOrigin("*");  /* 允许服务端访问的客户端请求头 */  corsConfiguration.addAllowedHeader("*");  /* 允许访问的方法名,GET POST等 */  corsConfiguration.addAllowedMethod("*");  urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);  return new CorsFilter(urlBasedCorsConfigurationSource); }}

这里我们在配置类中注入了 CorsFilter并重写了相关配置,大家可以根据自己的业务需求请里面的 * 改成具体的属性值。

通过上面的配置我们基本可以解决后端跨域问题,但是在一些特定情况下还是还出现跨域。

特殊情况

当项目中还有一个自定义过滤器,并且在过滤器中通过 response.getWriter().print()直接向客户端输出返回信息:

在这种情况下是不会继续执行后面的过滤器链的。

而在SpringBoot中自定义过滤器的优先级高于WebMvcConfigurer中定义的过滤器,所以此时由于未经过CORS过滤器的处理还是会出现跨域现象。

这种时候我们就需要改写CorsFilter的写法,让其在自定义过滤器之前执行。

解决方法

  • 自定义Cors过滤器

public class CustomerCorsFilter extends CorsFilter {    public CustomerCorsFilter() {        super(configurationSource());    }    private static UrlBasedCorsConfigurationSource configurationSource() {        // CORS授权        CorsConfiguration config = new CorsConfiguration();        config.setAllowCredentials(true);        config.addAllowedOrigin("*");        config.addAllowedHeader("*");        config.addAllowedMethod("*");        config.addExposedHeader(HttpHeaders.SET_COOKIE);        config.setMaxAge(3600L);        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();        source.registerCorsConfiguration("/**", config);                return source;    }}
  • 通过配置类指定过滤器的优先级

@Configurationpublic class FilterConfig {    @Bean    public Filter authFilter(){        return new AuthFilter();    }    /**     * WARNING :跨域过滤器,注意执行顺序,必须要在AuthFilter过滤器之后     * @return     */    @Bean    public FilterRegistrationBean corsFilterRegistration() {        FilterRegistrationBean registration = new FilterRegistrationBean();        //添加过滤器        registration.setFilter(new CustomerCorsFilter());        List urlList = new ArrayList<>();        urlList.add("/*");        //设置过滤路径,/*所有路径        registration.setUrlPatterns(urlList);        //添加默认参数        registration.setName("CorsFilter");        //设置优先级        registration.setOrder(-1);        return registration;    }    @Bean    public FilterRegistrationBean authFilterRegistration() {        FilterRegistrationBean registration = new FilterRegistrationBean();        //添加过滤器        registration.setFilter(authFilter());        List urlList = new ArrayList<>();        urlList.add("/*");        //设置过滤路径,/*所有路径        registration.setUrlPatterns(urlList);        //添加默认参数        registration.setName("authFilter");        //设置优先级        registration.setOrder(1);        return registration;    }}

通过setOrder()方法指定过滤器的执行顺序,用以保证CORS过滤器先入自定义过滤器执行。注意:order的顺序越小优先级越高。

上述内容就是SpringBoot开发中如何处理跨域请求CORS,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

过滤器 优先级 配置 路径 客户 客户端 情况 方法 问题 项目 顺序 处理 开发 信息 内容 参数 就是 技能 浏览器 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 上海卓越科技互联网 朗新科技与工业互联网 互联网 科技 智慧科技互联网 奇士达互联网科技 齐家互联网科技有限公司 科技互联网创业计划书 联恩商钥互联网科技有限公司 广西拼得多互联网科技有限公司 开启互联网科技时代小说 深圳市运趣互联网科技有限公司 语蝶互联网科技有限公司 广州千川互联网科技有限公司 萌小萌互联网科技河南有限公司 普陀区互联网教育科技管理办法 保山互联网科技靠谱吗 玉溪新华互联网科技怎么选 安徽零酒互联网科技有限公司 小牛互联网科技有限公司地址 互联网科技有限公司 互联网金融科技委员会 互联网科技热点资讯 福州新华互联网科技学校 知乎 崇明区互联网教育科技售后服务 互联网科技人工智能实验室 允成互联网科技有限公司融资 本届互联网大会上的黑科技 华人运通互联网科技公司 平安好医生打造互联网科技医疗
0