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
                });

 

posted @   一身大膘  阅读(2072)  评论(1编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示