欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

QQ浏览器兼容模式下Cookie失效 导致的NetCore Cookie认证失效

程序员文章站 2022-07-06 11:55:21
最近在写NetCore项目采用的是NetCore的Cookie认证。结果偶然发现QQ浏览器登录不好用。这里先需要了解一下set-cookie中的SameSite属性 导致原因 首先Fiddler 4查看一下两次请求 第一次Post进行登录 返回302重定向到站点首页并带回Cookie (一切正常) ......

最近在写netcore项目采用的是netcore的cookie认证。结果偶然发现qq浏览器登录不好用。这里先需要了解一下set-cookie中的samesite属性

 

 

 导致原因

 首先fiddler 4查看一下两次请求

 

QQ浏览器兼容模式下Cookie失效 导致的NetCore Cookie认证失效

 

 

第一次post进行登录 返回302重定向到站点首页并带回cookie (一切正常)

QQ浏览器兼容模式下Cookie失效 导致的NetCore Cookie认证失效

 

但是看第二条http请求,返回又是302 ,查看相关信息,请求时cookie 根本没带入

QQ浏览器兼容模式下Cookie失效 导致的NetCore Cookie认证失效

 

 

 

到此基本知道整个登录失败是因为cookie没有带入请求头。

 

 

解决方案:

  • netcore cookie认证下如何解决

经过一系列测试后发现是因为我们响应的cookie里面有samesite属性 影响了qq浏览器兼容cookie带入(也许是个浏览器bug吧)

QQ浏览器兼容模式下Cookie失效 导致的NetCore Cookie认证失效

好下面说如何解决此问题在netcore认证中我们如何取消掉此属性,

QQ浏览器兼容模式下Cookie失效 导致的NetCore Cookie认证失效

  • 自定义cookie如何解决

其实不光我们的认证cookie  其他cookie也一样 只要我们在netcore中指定了cooke的cookieoptions,不设置samesite的情况下默认为samesitemode.lax 此时在qq浏览器兼容模式 你的cookie就不会带入请求

 context.response.cookies.append("test-samesite", "123456", new cookieoptions()
                {
                    samesite=samesitemode.none
                });