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