C# HttpCookie.Path和映射的URL
根据官方文件页面: Path属性扩展了Domain属性,以完全描述应用cookie的特定URL。例如,在URL http:/www.microsoft.com/asp中,域是www.microsoft.com,路径是/asp 然后他们提供了一个例子:C# HttpCookie.Path和映射的URL,c#,asp.net,cookies,url-routing,relative-path,C#,Asp.net,Cookies,Url Routing,Relative Path,根据官方文件页面: Path属性扩展了Domain属性,以完全描述应用cookie的特定URL。例如,在URL http:/www.microsoft.com/asp中,域是www.microsoft.com,路径是/asp 然后他们提供了一个例子:mycokie.Path=“/asp” 在我看来,前面的陈述产生的问题多于答案。 所以我的问题是,如果我像前面的例子一样设置cookie,并且有一个像/asp/{id}这样的映射路由,会发生什么?也行吗 如果我仅使用asp定义没有/的路径,也会受到影
mycokie.Path=“/asp”代码>
在我看来,前面的陈述产生的问题多于答案。
所以我的问题是,如果我像前面的例子一样设置cookie,并且有一个像/asp/{id}
这样的映射路由,会发生什么?也行吗
如果我仅使用asp
定义没有/
的路径,也会受到影响?
还有一个问题,前一个设置的范围是什么(我的意思是我可以从哪些URL读取cookie)?我在另一个页面上找到了答案,答案是他们用小写字母写的:
路径可以是站点根目录下的物理路径,也可以是虚拟根目录下的路径。其效果是cookie仅对Application1文件夹或虚拟根目录中的页面可用。例如,如果您的站点名为www.contoso.com,则在上一示例中创建的cookie将可用于具有路径的页面以及该文件夹下的任何页面。但是,cookie将不可用于其他应用程序中的页面,例如或仅限于
例如:
HttpCookie appCookie = new HttpCookie("AppCookie");
appCookie.Value = "written " + DateTime.Now.ToString();
appCookie.Expires = DateTime.Now.AddDays(1);
appCookie.Path = "/Application1";
Response.Cookies.Add(appCookie);
他们还谈论类似的领域
范围:
默认情况下,cookie与特定域相关联。例如,如果您的站点是www.contoso.com,则当用户从该站点请求任何页面时,您编写的cookie将发送到服务器。(这可能不包括具有特定路径值的Cookie。)如果您的站点具有子域,例如contoso.com、sales.contoso.com和support.contoso.com,则您可以将Cookie与特定子域相关联。为此,请设置cookie的域属性,如本例所示:
以这种方式设置域时,cookie将仅对指定子域中的页面可用。您还可以使用Domain属性创建可在多个子域之间共享的cookie,如以下示例所示:
我已经用下面的代码更改了cookie路径。希望它也能对你有用
System.Web.HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId") { Path = "/Application", Value = newID });
//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";
System.Web.HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId") { Path = "/Application", Value = newID });