java解决跨域问题时的403报错

什么是跨域问题?

当一个请求的url的协议,域名,端口三者之间任意一个与当前页面url不同 即为跨域

问题背景:

如图,前端端口为8090,而后端端口为8099,形成跨域,无法对接

试图利用SpringBoot解决该问题

添加CORS过滤器:新建配置类CorsConfig:创建CorsFilter过滤器,允许跨域

java 复制代码
@Configuration
public class CrosConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET","POST","HEAD","PUT","DELETE","OPTIONS")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
    }
}
java 复制代码
@Configuration
public class GlobalCorsConfig {

    /**
     * 允许跨域调用的过滤器
     */
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        //允许所有域名进行跨域调用
        config.addAllowedOrigin("*");
        //允许跨越发送cookie
        config.setAllowCredentials(true);
        //放行全部原始头信息
        config.addAllowedHeader("*");
        //允许所有请求方法跨域调用
        config.addAllowedMethod("*");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }
}

以上两段代码尝试后,均报以下错误:

获取不到token值:

即:后端配置了跨域过滤器,但还是造成了跨域问题

问题解决:

发现vue发起的两遍请求,第二遍不带token

跨域问题从写好跨域过滤器后 本质上就已经解决了,所以无需更改跨域过滤器

更改前端端口号 如下:info仍在报错

一通排查,发现是后端代码问题:

在SecurityConfig中将"/admin/info"添加到白名单中

终于!!

得到最终token

如果还有问题,前后端对照,vue2.0的一个特性是会自动发起info请求,检查后端逻辑代码中是否有接口接收并处理info

相关推荐
兰令水4 小时前
leecodecode【树形DP】【2026.6.11打卡-java版本】
java·算法·深度优先
骑士雄师4 小时前
19.3 langgraph的工作节点和路由函数
java·前端·数据库
fox_lht5 小时前
14.6.将错误重定向到标准错误
开发语言·后端·学习·rust
SWAGGY..5 小时前
Linux系统编程:(十三)环境变量
java·linux·算法
程序员黑豆5 小时前
AI全栈开发 - Java:基本数据类型 vs 引用数据类型的内存存储
java·前端·ai编程
道友可好5 小时前
AI 测试全绿,代码却是错的
前端·人工智能·后端
布朗克1685 小时前
34 JVM深入理解
java·jvm
Flittly5 小时前
【AgentScope Java新手村系列】(4)结构化输出
java·spring boot·spring·ai
techdashen5 小时前
Rust 基础设施团队 2025 Q4 回顾与 2026 Q1 计划
开发语言·后端·rust
何以解忧,唯有..5 小时前
Python 中的继承机制:从基础到高级用法详解
java·开发语言·python