QQ瀏覽器兼容模式下Cookie失效 導致的NetCore 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
                });

 


免責聲明!

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



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