SameSite的解释和跨域cookie问题的解决
发布网友
发布时间:2024-09-08 17:43
我来回答
共1个回答
热心网友
时间:2024-10-22 22:47
在前后端分离的项目部署中,曾遇到一个测试环境问题:前端部署在10.155.18.1的8080,后端在10.155.19.2的8126,使用sso登录后,后端通过Set-Cookie的q字段保持登录状态。但在后续后端请求中,cookie并未携带。起初怀疑IP问题,但通过在本地配置两个host发现,使用域名访问时cookie正常携带。原因在于,了解了SameSite cookie*后,明白了问题所在。
cookie的设置是基于first-party和third-party的概念。当你访问某个网站时,与当前网址匹配的cookies被视为first-party,而其他域的cookies则为third-party。比如,博客上的第三方嵌入图片可能导致的cookie问题,虽然初衷是为了保持状态,但可能带来安全风险,如CSRF攻击。
SameSite属性的引入,明确了cookie的使用范围,包括None、Strict和Lax三种模式。Strict模式下,cookie只能在first-party请求中传输,而Lax模式允许在从第三方链接进入first-party站点时使用cookie。None模式则是明确表示在third-party请求中使用cookie,需权衡利弊。
谷歌浏览器从version 84开始默认启用SameSite特性,其他浏览器也计划跟进。了解了这些,最初的问题就得到了解答。