chrome浏览器samesite同站策略问题
问题: 近期在前后端分离做登录,出现本地postman/swagger调用cookie和session生成正常,前端服务器节点调用时出现session为null,cookie也会出现第二次访问变更,同一个页面请求sessionId值都不同,在F12查看cookie时看到黄色提示"", 后端已做跨域处理,前端 也使用了 withCredentials=true;
解析: 这个是新版的chrome浏览器samesite同站问题,浏览器的samesite属性用来防止CSRF攻击和用户跟踪; 其中 属性samesite 值可为 Strict/Lax/None;Strict 完全禁止第三方Cookie,跨站点时不会发送任何的cookie; Lax在 链接/预加载/form表单get请求时,才发送cookie; None不做同站的检查和限制. chrome 80版本之前默认为None,之后默认为Lax, 同时设置为SameSite=None; Secure ,即https协议才会生效;
解决办法:
1.部分浏览器版本可打开 chrome://flags/#site-isolation-trial-opt-out 将"SameSite by default cookies"和"Cookies without SameSite must be secure"的项禁用,并reluanch,可临时解决用户问题;
2.将response的header设置为
Set-Cookie: SameSite=None; Secure
即必须为https协议;
3.使用Nginx做同源映射,为域名时端口不做限制,servername为IP时端口限制为80,否则前后端请求时domain显示一个为IP,一个为IP:port;注意: nginx需和前端服务器或者后端服务器放在同一个节点,(问题: 分布式时只能使用https方法?)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)