我正在构建一个 Asp.net core 8 mvc 应用程序并有一个控制器。
我的目标是在重定向到不同的域之前在 302 重定向上设置持久 cookie。我的控制器“Checker”操作“Check1”首先重定向到同一控制器内的操作“Check2”。 “Check2”最后重定向到外部网址。
Check1 url: https://localhost:7058/checker/Check1
Check2 url: https://localhost:7058/checker/Check2
在“网络”选项卡上的开发人员工具中,我看到两个重定向。
从“Check1”到“Check2”的第一个重定向在“响应标头”下显示一条警告“通过 Set-Cookie 标头设置 cookie 的尝试被阻止,因为其 Domain 属性对于当前主机 url 无效。”并且没有设置 cookie。
设置cookie的代码
Response.Cookies.Append("afc", token, new CookieOptions
{
Domain = baseUrl,
IsEssential = true,
Expires = DateTime.Now.AddDays(365),
Secure = true,
SameSite = SameSiteMode.Lax,
Path = "/"
});
baseUrl 设置为“https://localhost:7058”
设置-Cookie:
afc=test123; expires=Thu, 10 Apr 2025 17:15:54 GMT; domain=https://localhost:7058; path=/; secure; samesite=lax
我检查了什么?
我相信我已经阅读了 stackoverflow 上有关此错误以及这篇文章的所有现有问题和答案,但我无法弄清楚。
请您指教一下吗?
看来 Cookie 选项中的域参数应该只是主机名,没有协议和端口。例如。在本地工作时,它应该是“localhost”。
工作集-Cookie:
afc=test123; expires=Thu, 10 Apr 2025 17:15:54 GMT; domain=localhost; path=/; secure; samesite=lax