公司已有的系統已經正常運行了很久,但是最近突然打不開,經過排查不是代碼的問題,是操作人員更新了Google版本,Google 80以下版本中可以正常使用系統,但是更新之后卻無法使用,所以判斷問題原因是更新了Google瀏覽器版本所導致的,Google瀏覽器在80以上版本中不支持不安全的cookie跨域傳輸了。經過一番百度后,找到以下解決方案:方便快捷又不用修改代碼。只需要禁用一下Google瀏覽器的兩個功能即可。操作如下:
在google瀏覽器地址欄分別輸入如下地址:
chrome://flags/#same-site-by-default-cookies
chrome://flags/#cookies-without-same-site-must-be-secure
修改了以上之后,重新打開google瀏覽器就可以了,這個做法非常簡單也不用修改代碼,但是呢為了安全起見還是建議修改代碼,以適應發展。
除了以上的方法還可以使用以下幾種方式:
(1)不使用谷歌瀏覽器或者將谷歌瀏覽器降級到 Chrome 79 及以下版本,並關閉自動更新。
(2)將兩個系統部署在同一台服務器,通過相同IP同源策略傳送cookie。
(3)購買SSL證書,升級HTTP服務,將 API 切換為 HTTPS 協議請求,並且檢查響應頭中的 Set-Cookie 中是否包含了 SameSite=None 和 Secure字樣。
更多信息:
Cookie 的 SameSite 屬性 參見:
(1) http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html
(2)https://blog.lyz810.com/article/2017/05/samesite-cookies-explained/
Google 80版本發布更新的內容參見:
(1) https://blog.lyz810.com/article/2020/01/chrome-80-release-note/
參考資料:
(1) https://blog.csdn.net/yhyc812/article/details/108623844
(2)https://blog.csdn.net/qwe435541908/article/details/105048484
(3)https://blog.csdn.net/dongguabai/article/details/105522714
(4)https://help.aliyun.com/document_detail/151711.html
(5)https://www.cnblogs.com/hexiaobao/p/12604065.html