默认情况下,一个站点的全部Cookie都一起存储在客户端上,而且所有Cookie都会随着对该站点发送的任何请求一起发送到服务器。也就是说,一个站点中的每个页面都能获得该站点的所有Cookie。但是,可以通过两种方式设置Cookie的作用范围:
- 将Cookie的范围限制到服务器上的某个文件夹或站点上的某个应用程序;
- 将范围设置为某个域。这允许您指定站点中的哪些子域可以访问Cookie。
1.将Cookie限制到某个文件夹或应用程序
若要将Cookie限制到服务器上的某个文件夹,请按下面的示例设置Cookie的Path属性:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 HttpCookie appCookie = new HttpCookie("AppCookie"); 2 appCookie.Value = "written " + DateTime.Now.ToString(); 3 appCookie.Expires = DateTime.Now.AddDays(1); 4 appCookie.Path = "/Application1"; 5 Response.Cookies.Add(appCookie);
路径可以是站点根目录下的物理路径,也可以是虚拟根目录。所产生的效果是Cookie只能用于Application1文件夹或虚拟根目录中的页面。
注意:在某些浏览器中,路径区分大小写。您无法控制用户如何在其浏览器中键入URL,但如果应用程序依赖于与特定路径相关的Cookie,请确保您创建的所有超链接中的URL与Path属性值的大小写相匹配。
2.限制Cookie的域范围
默认情况下,Cookie与创建它所在的域关联(例如,www.mysite.com)。如果站点具有多个域(例如,sales.mysite.com和support. mysite.com),则可以将Cookie与特定的域关联。若要执行此操作,请设置Cookie的 Domain 属性,如此示例所示:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 Response.Cookies["domain"].Value = DateTime.Now.ToString(); 2 Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1); 3 Response.Cookies["domain"].Domain = "support.mysite.com";
此时,Cookie 将仅可用于指定的support.mysite.com中的页面。还可以使用Domain属性创建可在多个域间共享的Cookie,如下面的示例所示:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 Response.Cookies["domain"].Value = DateTime.Now.ToString(); 2 Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1); 3 Response.Cookies["domain"].Domain = "mysite.com";
此时,Cookie将可用于www.mysite.com域,也可用于sales.mysite.com和support. mysite.com域。