.NET Core应用Set-Cookie被拦截 Domain属性无效问题排查求助
问题根因及修复方案
1. Cookie Domain属性配置格式错误
Cookie的Domain字段仅支持填写域名/IP,禁止携带协议头、端口号,你的两次配置均不符合规范:
- 首次配置的
"http://localhost:5006"携带了http://协议头,违反Domain属性的格式要求 - 后续修改的
"localhost:5006"携带了端口号5006,Domain本身不识别端口参数,浏览器匹配Cookie时会单独校验端口,无需写入Domain字段
修复方式:本地localhost开发场景下,直接删除CookieOptions中的Domain配置即可,浏览器会自动匹配当前响应的源;也可显式配置为Domain = "localhost"。
// 修正后的Cookie配置示例 Response.Cookies.Append(id, "rememberDevice", new CookieOptions() { Expires = DateTimeOffset.Now.AddMinutes(2), Path = "/", HttpOnly = true, IsEssential = true // 本地开发删除Domain配置,如需显式指定仅写Domain = "localhost" });
2. 需同步校验后端CORS配置
前后端分离跨域场景下,仅前端配置withCredentials: true不足以让Cookie正常写入,.NET Core的CORS配置必须满足以下要求:
- 不能使用
AllowAnyOrigin()通配符,必须显式指定允许的前端访问源,例如WithOrigins("http://localhost:4200")(替换为你Angular应用实际的访问地址) - 必须添加
AllowCredentials()配置,允许跨域请求携带凭证
内容的提问来源于stack exchange,提问作者Robbie Mills
相关产品推荐
相关产品推荐

