前端页面使用axios请求后端接口,提示还未登陆。但是后端接口使用postman验证确实是可行的

问题描述:

后端接口是有做对用户登陆状态的校验,使用postman进行测试,该接口功能可能,可以满足业务需求,但是前端使用axios请求时会提示用户还没有登陆,实际上,已经存储了session。

接口返回:

本地:

通过调试代码,基本可以确认是session的问题,前端和postman发起的请求是存在差异的,前端页面的session并没有传到后端,在一番仔细查找的,终于发现了问题:

有个感叹号,点击后的内容是:

此Set-Cookie标头未指定'SameSite"届性,它默认为'SameSite=Lax,"并被阻止,因为它来自跨站点响应,而不是对顶级导航的响应。必须为此SetCookie设置"SameSite=None"才能实现跨站点使用

原来是因为我前端页面的端口是8080,后端是8083,存在跨域问题,所以虽然在 Response Header 里看到了set-cookie的操作,但是在浏览器的 application里看到,并没有被设置进来。

原因:谷歌浏览器80以后版本的内核限制了set-cookie的操作,需要在请求头中,为SetCookie设置"SameSite=None"

解决方法:

1.如果是本地开发,并不想做其他额外的操作,可以选择更换浏览器(搜狗浏览器、360浏览器)

2.使用https加密,SetCookie设置"SameSite=None"

3.添加拦截器,在请求头中加入 SameSite=None

相关推荐
不好听6134 分钟前
Web Worker:浏览器给 JS 开的后台子线程
前端·浏览器
计算机魔术师9 分钟前
数据分析还在靠人跑 SQL?AI 智能体已经把效率拉到 63 倍
前端
瑞码空间16 分钟前
Routing & API:前后端协作的本质与实现
前端·后端·接口·路由
不好听61317 分钟前
React 的 useRef vs useState:响应式与非响应式的分界线
前端·react.js
我真是泰库辣19 分钟前
用TraeWork制作应用 —— 从 0 到 1 · 手把手搭建 opencode 网页对话网关
前端·后端
RobinDevNotes28 分钟前
轻量级动画引擎Anime.js迎来V4大版本更新
开发语言·前端·javascript·ecmascript·动画·c4前端
渣波33 分钟前
React 性能优化实战:从 memo 到 Hooks 的底层原理与进阶封装
前端·javascript
触底反弹33 分钟前
别再 Prop Drilling 了!一文彻底搞懂 React 组件通信的 5 种方案
前端·javascript·react.js
玉宇夕落34 分钟前
受控与非受控组件以及一些表单的简单业务逻辑的理解
前端
两只羊ovo34 分钟前
listToTree 速通:一维数组怎么变出多级菜单?Map 和 reduce 两种全解
前端·javascript