最近在写NetCore项目采用的是NetCore的Cookie认证。结果偶然发现QQ浏览器登陆很差用。这里先须要了解一下set-cookie中的SameSite属性浏览器
致使缘由cookie
首先Fiddler 4查看一下两次请求测试
第一次Post进行登陆 返回302重定向到站点首页并带回Cookie (一切正常)spa
可是看第二条http请求,返回又是302 ,查看相关信息,请求时Cookie 根本没带入.net
到此基本知道整个登陆失败是由于Cookie没有带入请求头。code
解决方案:blog
通过一系列测试后发现是由于咱们响应的Cookie里面有samesite属性 影响了QQ浏览器兼容Cookie带入(也许是个浏览器Bug吧)get
好下面说如何解决此问题在NetCore认证中咱们如何取消掉此属性,it
其实不光咱们的认证Cookie 其余Cookie也同样 只要咱们在NetCore中指定了Cooke的CookieOptions,不设置SameSite的状况下默认为SameSiteMode.Lax 此时在QQ浏览器兼容模式 你的Cookie就不会带入请求io
context.Response.Cookies.Append("test-SameSite", "123456", new CookieOptions() { SameSite=SameSiteMode.None });