新版本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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM