我遇到了一个问题而且我不确定如何修复它。这是场景。
用户访问我的网站(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)
非常感谢任何帮助。
答案 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。