根据官方文档页面HttpCookie.Path:
Path属性扩展Domain属性以完全描述cookie适用的特定URL。例如,在URL http:/www.microsoft.com/asp中,域名为www.microsoft.com,路径为/ asp。
然后他们提供了一个示例:MyCookie.Path = "/asp";
我认为之前的陈述创造的问题多于答案。
所以我的问题是如果我像上一个例子一样设置cookie并且我有一个像/asp/{id}
这样的映射路由会发生什么?会工作吗?
如果我使用/
定义没有asp
的路径,也会影响?
还有一个问题,上一个设置的范围是什么(我的意思是我可以读取cookie的网址)?
答案 0 :(得分:4)
我在他们写的小写字母中找到了另一个official page的答案:
路径可以是站点根目录下的物理路径,也可以是虚拟根目录。结果是cookie仅可用于Application1文件夹或虚拟根目录中的页面。例如,如果您的网站名为www.contoso.com,则上一示例中创建的Cookie将可用于路径为http://www.contoso.com/Application1/的网页以及该文件夹下的任何网页。但是,Cookie不会用于其他应用程序中的页面,例如http://www.contoso.com/Application2/或http://www.contoso.com/。
示例:
HttpCookie appCookie = new HttpCookie("AppCookie");
appCookie.Value = "written " + DateTime.Now.ToString();
appCookie.Expires = DateTime.Now.AddDays(1);
appCookie.Path = "/Application1";
Response.Cookies.Add(appCookie);
他们还讨论了类似Domain
范围的内容:
默认情况下,Cookie与特定域相关联。例如,如果您的站点是www.contoso.com,则当用户请求来自该站点的任何页面时,您编写的cookie将被发送到服务器。 (这可能不包括具有特定路径值的cookie。)如果您的站点具有子域(例如contoso.com,sales.contoso.com和support.contoso.com),则可以将cookie与特定子域相关联。为此,请设置cookie的域属性,如下例所示:
Response.Cookies["domain"].Value = DateTime.Now.ToString();
Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1);
Response.Cookies["domain"].Domain = "support.contoso.com";
当以这种方式设置域时,cookie将仅对指定子域中的页面可用。您还可以使用Domain属性创建可在多个子域之间共享的cookie,如以下示例所示:
//The cookie will then be available to the primary domain as well as to sales.contoso.com and support.contoso.com domains.
Response.Cookies["domain"].Value = DateTime.Now.ToString();
Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1);
Response.Cookies["domain"].Domain = "contoso.com";
答案 1 :(得分:0)
我已使用以下代码更改Cookie路径。希望它也适合你。
System.Web.HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId") { Path = "/Application", Value = newID });