新版本chrome浏览器带来的跨域请求cookie丢失问题

新版本的chrome浏览器(80版本之后)对cookie的校验更加严格,有页面嵌套的可能会出现问题。
chrome升级到80版本之后(最坑的地方:灰度测试,即也可能存在同一版本不同人的浏览器表现不同)cookieSameSite属性默认值由None变为Lax,该问题的讨论可参考:https://github.com/google/google-api-javascript-client/issues/561

Lax模式下,以下类型请求将受影响:

请求类型

示例

正常情况

Lax

链接

<a href="..."></a>

发送 Cookie

发送 Cookie

预加载

<link rel="prerender" href="..."/>

发送 Cookie

发送 Cookie

GET 表单

<form method="GET" action="...">

发送 Cookie

发送 Cookie

POST 表单

<form method="POST" action="...">

发送 Cookie

不发送

iframe

<iframe src="..."></iframe>

发送 Cookie

不发送

AJAX

$.get("...")

发送 Cookie

不发送

Image

<img src="...">

发送 Cookie

不发送

解决方法1
下面的设置无效。
Set-Cookie: widget_session=abc123; SameSite=None
下面的设置有效。
Set-Cookie: widget_session=abc123; SameSite=None; Secure
解决方法2
两个跨域的网站部署到一起,例如
www.xxx.com/A网站
www.xxx.com/B网站
解决问题3:
谷歌浏览器里面:
chrome://flags/
SameSite by default cookies这个参数设置成disabled

posted @ 2020-11-07 16:13  荆棘中的百合花  阅读(2469)  评论(0编辑  收藏  举报