前后端分离,后端拦截器无法获得前端请求的token

首先需要了解两个知识点:

跨域是指在浏览器中,一个网页试图请求另一个域(协议、域名或端口不同 )的资源时,所涉及的安全机制。在Web开发中,一般来说,由于安全性原因,浏览器会阻止一个域访问另一个域的数据,这种限制称为同源策略(Same-Origin Policy)。

进行跨域请求时,浏览器会先发送一个OPTIONS请求,以确认目标服务器允许特定的请求方法和头。

关键来了,这个自动发送的options请求,是不会带有我们的token的。而路径却是跟我们实际请求一致,因此同样会被拦截器拦截。所以即便我们设置了cros的config,options也会因为没有token而被拒绝,而实际带有token的请求却因为options被拒绝而没有发送。

解决办法:

在拦截器中加入以下代码,在识别到是OPTIONS请求时通过

java 复制代码
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
            response.setStatus(HttpServletResponse.SC_OK);
            return false; // 不继续处理后续逻辑
        }
相关推荐
坐而论道_16 分钟前
兼容低版本 Android:让现代 Web 应用在旧 WebView 上稳定运行
前端·面试
程序员天天困27 分钟前
优雅记录操作日志:从注解到 SpEL 的全链路实践与开源方案对比
java·后端
ssshooter35 分钟前
Promise 和 async/await 被 try-catch 包裹时的行为差异
前端·javascript·面试
肖志-AI全栈40 分钟前
从零讲透 Ajax:XHR、Fetch、JSON 序列化到异步编程全链路
前端·ajax·json
yyt36304584143 分钟前
KlineChartQuant Tooltip 高频交互 200FPS 性能优化完整复盘
前端·经验分享·性能优化·typescript·vue·交互·chrome devtools
战血石LoveYY44 分钟前
Integer类型超限,导致数据异常
java·算法
2601_963771371 小时前
WordPress SEO Guide: Boost Rankings Without Technical Jargon
前端·php
李顿波1 小时前
Chrome 扩展程序 MV3 架构组件概览
前端·chrome·浏览器插件
KingCodeHan1 小时前
ESLint 完全指南:从入门到精通
前端
GHL2842710902 小时前
安装chrome浏览器
前端·chrome