千家信息网

怎么解决springboot设置CorsFilter跨域不生效问题

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要讲解了"怎么解决springboot设置CorsFilter跨域不生效问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么解决sprin
千家信息网最后更新 2026年11月04日怎么解决springboot设置CorsFilter跨域不生效问题

这篇文章主要讲解了"怎么解决springboot设置CorsFilter跨域不生效问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么解决springboot设置CorsFilter跨域不生效问题"吧!

设置CorsFilter跨域不生效的解决

问题描述

公司的前后端开发项目工程,在本地调试的时候遇到了跨域的问题,同事调我的服务一直提示跨域问题,然后前端nb他自己在哪里做了跨域处理,类似nginx那种,但是我还是百度去看了一下,在一个大佬的博客中发现了解决方案。

问题原因是是写的判断登录的filter影响了登录,原因是的这个filter执行顺序在corsfilter之前导致,于是修改了一下跨域设置的配置文件

解决方案

/** * 使用CORS,用于解决ajax跨域访问问题 */@Configurationpublic class GlobalCorsConfig {    @Bean    public FilterRegistrationBean corsFilter() {        //1.添加CORS配置信息        CorsConfiguration config = new CorsConfiguration();        //1) 允许的域,不要写*,否则cookie就无法使用了        //config.addAllowedOrigin("http://manage.leyou.com");        //config.addAllowedOrigin("http://www.leyou.com");        config.addAllowedOrigin("*");        //2) 是否发送Cookie信息        config.setAllowCredentials(true);        //3) 允许的请求方式        config.addAllowedMethod("OPTIONS");        config.addAllowedMethod("HEAD");        config.addAllowedMethod("GET");        config.addAllowedMethod("PUT");        config.addAllowedMethod("POST");        config.addAllowedMethod("DELETE");        config.addAllowedMethod("PATCH");        config.setMaxAge(3600L);        // 4)允许的头信息        config.addAllowedHeader("*");         //2.添加映射路径,我们拦截一切请求        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();        configSource.registerCorsConfiguration("/**", config);         //3.返回新的CorsFilter.        //return new CorsFilter(configSource);         FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(configSource));        bean.setOrder(0);        return bean;    }}

跨域配置CorsFilter不生效原因

项目中有多个Filter时,需要通过 @Order(Ordered.HIGHEST_PRECEDENCE) 注解设置过滤器的执行顺序

order的规则

1. order的值越小,优先级越高

2. order如果不标注数字,默认最低优先级,因为其默认值是int最大值

3. 该注解等同于实现Ordered接口getOrder方法,并返回数字。

如果使用如下注释掉的方法进行设置跨域,Filter的doFilter()方法中直接return出去时,前端会提示跨域

因为这个CorsConfig并没有实现Filter接口,即使加上 @Order 注解也不会生效,需要通过如下新的方式返回一个新的FilterRegistrationBean出去,并设置order

import com.nanase.takeshi.constants.JwtConstant;import lombok.extern.slf4j.Slf4j;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.Ordered;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfigurationSource;import org.springframework.web.filter.CorsFilter;/** * CorsConfig * 跨域请求配置 * * @author 725 * @date 2020/12/10 18:17 */@Slf4j@Configurationpublic class CorsConfig {    private CorsConfiguration buildConfig() {        CorsConfiguration corsConfiguration = new CorsConfiguration();        // 1 设置访问源地址        corsConfiguration.addAllowedOrigin("*");        // 2 设置访问源请求头        corsConfiguration.addAllowedHeader("*");        // 3 设置访问源请求方法        corsConfiguration.addAllowedMethod("*");        // 4 暴露哪些头部信息        corsConfiguration.addExposedHeader(JwtConstant.HEADER);        return corsConfiguration;    }    /**        @Bean    public CorsFilter corsFilter() {        log.info("跨域设置。。。。");        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();        // 对接口配置跨域设置        source.registerCorsConfiguration("/**", buildConfig());        return new CorsFilter(source);    }    */        @Bean    public FilterRegistrationBean corsFilter() {        log.info("跨域设置。。。。");        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();        // 5 对接口配置跨域设置        source.registerCorsConfiguration("/**", buildConfig());        //有多个filter时此处设置改CorsFilter的优先执行顺序        FilterRegistrationBean bean = new FilterRegistrationBean<>(new CorsFilter(source));        bean.setOrder(Ordered.HIGHEST_PRECEDENCE);        return bean;    }}

感谢各位的阅读,以上就是"怎么解决springboot设置CorsFilter跨域不生效问题"的内容了,经过本文的学习后,相信大家对怎么解决springboot设置CorsFilter跨域不生效问题这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

问题 配置 信息 方法 原因 注解 顺序 学习 优先级 内容 前端 多个 对接口 接口 数字 方式 方案 解决方案 项目 提示 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳九邦互联网科技有限公司 互联网科技与金融科技 合肥互联网科技公司 中国 科技 互联网 南京欣网互联网科技 中正互联网科技招聘 互联网科技公司招聘 湖南洣水互联网科技有限公司扣款 福州新华互联网科技学校 知乎 佳云科技和互联网广告 赶超互联网科技 微信多开 国大互联网教育科技有限公司工作 乌鲁木齐新华智原互联网科技学校 互联网科技创新的路径 美国互联网科技实力 上海京穆互联网科技有限公司 张召忠谈中国互联网科技 工业互联网科技成果转化 中国新注册互联网科技 恒生科技指数 中概互联网 科技平台互联网 互联网科技与金融科技 奇酷互联网科技公司 华中科技大学互联网 长亮科技互联网金融 科技大学互联网专业好不好 农村开互联网科技讲堂 崇明区互联网教育科技售后服务 速维有品互联网信息科技(苏州)有限公司 东营紫格互联网科技
0