前后端分离,后端拦截器无法获得前端请求的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; // 不继续处理后续逻辑
        }
相关推荐
xiaohua10099 分钟前
JVM内存优化-jemalloc
java·jvm
吃饱了得干活14 分钟前
Redisson 进阶实战:看门狗机制与分布式锁完全指南
java·redis·后端
huali18 分钟前
vue-split-screen:让 Vue Router 的导航轨迹变成两个页面
前端·javascript·vue.js
淘源码d21 分钟前
基于Java开发的上门家政系统源码,采用SpringBoot+MySQL+UniApp+Vue3技术栈,构建三端一体化平台
java·源码·上门家政·家政系统·同城家政·源码部署
Wang's Blog23 分钟前
Java框架快速入门: Spring Security+OAuth2之多因子认证逻辑与实体类改造
java·开发语言·spring
ashiho26 分钟前
【Spring】RequestParam/PathVariable/RequestBody详解
java·后端·spring·servlet·springmvc
bug总结28 分钟前
uniapp总结
开发语言·前端·javascript
云运维笔记34 分钟前
华为VRP系统文件管理全攻略
前端·华为
Escalating_xu37 分钟前
【mmap 进程间通信】从共享内存到跨进程唤醒:用互斥锁、条件变量控制多个进程
java·linux·开发语言·jvm
走到天涯海角39 分钟前
pinia和Vuex的区别以及使用pinia
开发语言·前端·javascript