前后端分离,后端拦截器无法获得前端请求的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; // 不继续处理后续逻辑
        }
相关推荐
鱼鳞_6 小时前
Java学习笔记_Day37(网络编程)
java·网络·笔记·学习
Metaphor6926 小时前
使用 Python 合并 PDF 文件
java·python·pdf
我是无敌小恐龙6 小时前
Java SE 零基础入门Day03 数组核心详解(定义+内存+遍历+算法+实战案例)
java·开发语言·数据结构·人工智能·算法·aigc·动态规划
小小码农Come on6 小时前
QPainter双缓冲区实现一个简单画图软件
linux·服务器·前端
甘露寺6 小时前
深入理解并发模型:从 Python 的 async/await 到 Java 的虚拟线程与线程池机制
java·开发语言·网络
nunumaymax6 小时前
【第三章-react 应用(基于 react 脚手架)】
前端·react.js·前端框架
空中海6 小时前
第一章:Vue 基础与模板语法
前端·javascript·vue.js
HAWK eoni6 小时前
java进阶1——JVM
java·开发语言·jvm
HUGu RGIN6 小时前
Django视图与URLs路由详解
java