如何防止在不同主机下创建Cookie

时间:2013-08-02 23:10:53

标签: asp.net vb.net

我遇到了一个问题而且我不确定如何修复它。这是场景。

用户访问我的网站(www.MyWebSite.com)并点击一个将cookie放在他们的计算机上的按钮。如果我在他们的机器上检查了那个cookie,它会将“主机”列为www.MyWebSite.com。

如果用户随后将浏览器中的URL更改为MyWebSite.com(没有www)重新加载页面然后单击按钮,则会创建一个与第一个cookie同名的全新cookie。此cookie的主机是MywebSite.com

显然这并不好 - 除了两个同名的cookie之外,我的程序只读取了带有相应URL地址的cookie。

我可以强制使用www主机创建cookie和/或我可以强制页面是www还是什么?什么以及如何防止这个问题的最佳方法?

使用VB.net创建Cookie

Response.Cookies("AAA")("bbb") = strABC
Response.Cookies("AAA").Expires = DateTime.Now.AddDays(1)

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

出于(显而易见的)安全原因,您只能读取由用户请求的同一域设置的cookie。它是否仅仅是您示例中的差异或完全不同的域名并不重要。

在这种情况下你可以做些什么(它也应该改善你的搜索引擎优化),是将没有www的网站的所有流量重定向(301)到带有www的网站。

如果您使用的是IIS 7或更高版本,可以在此处找到有关如何通过网址重写执行此操作的示例:http://weblogs.asp.net/owscott/archive/2009/11/27/iis-url-rewrite-rewriting-non-www-to-www.aspx

答案 1 :(得分:0)

这是出于安全原因。主机的任何子域都被认为是另一个领域,另一个世界。

如果您希望将Cookie发送到您的子域,请使用Host启动Cookie的.属性。换句话说,请为.MyWebSite.Com设置Cookie。

有关详细信息,请参阅Wikipedia