最近在寫NetCore項目採用的是NetCore的Cookie認證。結果偶然發現QQ瀏覽器登錄不好用。這裡先需要瞭解一下set-cookie中的SameSite屬性 導致原因 首先Fiddler 4查看一下兩次請求 第一次Post進行登錄 返回302重定向到站點首頁並帶回Cookie (一切正常) ...
最近在寫NetCore項目採用的是NetCore的Cookie認證。結果偶然發現QQ瀏覽器登錄不好用。這裡先需要瞭解一下set-cookie中的SameSite屬性
導致原因
首先Fiddler 4查看一下兩次請求
第一次Post進行登錄 返回302重定向到站點首頁並帶回Cookie (一切正常)
但是看第二條http請求,返回又是302 ,查看相關信息,請求時Cookie 根本沒帶入
到此基本知道整個登錄失敗是因為Cookie沒有帶入請求頭。
解決方案:
- NetCore Cookie認證下如何解決
經過一系列測試後發現是因為我們響應的Cookie裡面有samesite屬性 影響了QQ瀏覽器相容Cookie帶入(也許是個瀏覽器Bug吧)
好下麵說如何解決此問題在NetCore認證中我們如何取消掉此屬性,
- 自定義Cookie如何解決
其實不光我們的認證Cookie 其他Cookie也一樣 只要我們在NetCore中指定了Cooke的CookieOptions,不設置SameSite的情況下預設為SameSiteMode.Lax 此時在QQ瀏覽器相容模式 你的Cookie就不會帶入請求
context.Response.Cookies.Append("test-SameSite", "123456", new CookieOptions() { SameSite=SameSiteMode.None });