我有两个托管在同一主机上的 AspNetCore 站点。我正在尝试解开他们的 cookie,以便它不会出现在标题中的 overload the max size。
我在谷歌的网站上读到,域和路径都用于决定哪些请求获得哪些 cookie。域被设置为主机名。但 Path 似乎正是我所需要的。
但是当我尝试设置路径时,它实际上从未改变。我尝试了两种不同的方法。对于两者,代码如下所示:
cookieAuthenticationOptions.Cookie.Path = "/MyAppRootPath";
第一种方法将此代码添加到 services.AddAuthentication(...).AddCookie(...)
另一个是相同的代码,但在 services.ConfigureApplicationCookie(...)
中完成。 (来自这个question。)
对于这两种方式,当我在 Chrome 开发工具中查看我的 cookie 时,路径仍然设置为默认的 /
:
如何将 cookie 的路径设置为默认值 /
以外的其他内容?
答案 0 :(得分:0)
引自MDN:
<块引用>Path 属性表示 URL 路径必须存在于 请求的 URL 以发送 Cookie 标头。 %x2F ("/") 字符被视为目录分隔符,子目录 也匹配。
如果你这样配置cookie路径:
cookieAuthenticationOptions.Cookie.Path = "/MyAppRootPath";
此 cookie 仅适用于路径 Domain/MyAppRootPath
或 Domain/MyAppRootPath/...
。
我用不同的路径测试了三个 cookie。
services.AddAuthentication()
.AddCookie("Cookie1", options =>
{
options.Cookie.Name = "Cookie1";
options.Cookie.Path = "/";
})
.AddCookie("Cookie2", options =>
{
options.Cookie.Name = "Cookie2";
options.Cookie.Path = "/Home";
})
.AddCookie("Cookie3", options =>
{
options.Cookie.Name = "Cookie3";
options.Cookie.Path = "/Home/Test";
});
结果:
https://localhost:44396/
https://localhost:44396/Home
https://localhost:44396/Home/Test