Chrome中Set-Cookie不生效问题排查求助
我来帮你梳理这个问题,这种情况基本不是浏览器Bug,更大概率是安全属性的默认设置或者配置细节导致的,咱们一步步分析:
先检查HttpOnly属性的影响:
你看到的响应头里,这个Cookie带了httponly标记——这是一个安全属性,目的是阻止客户端脚本(包括浏览器开发者工具的Application标签、第三方Cookie管理扩展)直接读取Cookie,以此防范XSS攻击。
Chrome的Application标签默认不显示HttpOnly类型的Cookie,你只需要在Cookie列表的上方找到并勾选「Show HttpOnly」选项,就能看到这个.AspNetCore.Antiforgery.w5W7x28NAIsCookie了。像EditThisCookie这类扩展也受这个属性限制,无法读取HttpOnly Cookie,这是正常的安全机制,不是问题。确认Cookie路径匹配性:
你的Cookie设置了path=/,这意味着它对全站路径生效,只要你请求的登录页URL属于这个根路径下,就不会有路径不匹配的问题。不过可以简单确认下当前页面的URL是否和Cookie的path一致,避免出现子路径站点的特殊情况。老版本Chrome的小概率兼容问题:
你使用的Chrome 66版本比较老旧(当前主流版本已经是100+),虽然SameSite=Strict在这个版本已经支持,但如果勾选「Show HttpOnly」后仍然看不到Cookie,可以尝试清除浏览器缓存和现有Cookie,重新请求登录页再检查。ASP.NET Core配置的验证:
在你的ASP.NET Core项目中,Anti-Forgery Cookie默认会设置HttpOnly=true,这和你看到的响应头一致。如果出于特殊需求(非常不推荐,会提升XSS风险)想要让前端能访问这个Cookie,可以在Anti-Forgery配置中把Cookie.HttpOnly设为false,但强烈建议保持默认的安全配置。
总的来说,最可能的解决方法就是在Chrome开发者工具的Application标签里勾选「Show HttpOnly」,这是浏览器的安全默认行为,不是Bug。
内容的提问来源于stack exchange,提问作者Rushi Soni

