我有几个网站。每个站点都是一个本地化版本,提供特定于一组给定语言环境的内容。还有一个全局或“全局”站点。我将它们设置如下:
我正在尝试使用 cookie 跟踪每个应用程序上的事件。每个站点的 cookie 名称都相同,并且使用域的默认设置(即在 .net 中,我没有为 httpCookie.Domain 指定值 - 我将其保留为默认值)。
当我访问“特定于区域设置”的站点时,一切正常,但是一旦我访问了“全局”站点,当我返回访问我的“特定于区域设置”站点时,似乎使用了来自该站点的 cookie,而不是为“特定于区域设置”的站点发布的 cookie。
关于如何让我的“全局”cookie 优先于“本地特定”站点上的“本地特定”cookie 的任何想法?
最佳答案
在大多数浏览器中,设置没有“域”的 cookie 使其仅在当前主机名上有效。这不能通过在“域”上设置任何值来实现;如果此行为是您想要的,则必须省略“域”参数。
但是在 IE 中,您设置的任何没有“域”的 cookie 都将获得当前主机名的隐式“域”。这意味着如果您在“example.com”上设置 cookie,您将无法阻止它被发送到“sub.example.com”。
因此,您不能拥有不共享父域的部分安全上下文的子域。如果您想将子域与其父域分开,您必须(如 JustLoren 建议的)创建主站点 www.example.com
而不仅仅是 example.com
.
当具有不同域的两个 cookie 有效时,浏览器通常会同时发送它们,因此您可以期待 document.cookie
喜欢 'a=b; a=c'
.如果您的 cookie 读取层不希望有多个同名的 cookie,其中一个将消失(您无法控制哪个)。
另一种方法,如果您不关心在其他站点和主站点之间设置边界,则只需在不同的子站点上使用不同的 cookie 名称。
关于asp.net - Cookie 域优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1946552/