asp.net - Cookie 域优先级?

标签 asp.net cookies

我有几个网站。每个站点都是一个本地化版本,提供特定于一组给定语言环境的内容。还有一个全局或“全局”站点。我将它们设置如下:

  • http://mydomain.com
  • http://us.mydomain.com
  • http://uk.mydomain.com
  • 等等...

  • 我正在尝试使用 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/

    相关文章:

    C# REST webservice认证问题

    c# - 使用匿名访问在 Sharepoint 中读取 cookie 时出现问题

    asp.net-mvc-2 - iframe、跨域 cookie、p3p 策略和 safari 出现错误 : A required anti-forgery token was not supplied or was invalid

    asp.net - 通过 ASP.Net SSRS ReportViewer 呈现后更改 Excel 中的行高

    c# - ASP.NET MVC 2 验证选择列表

    javascript - 该代码是在服务器端执行的吗?

    ruby-on-rails - 无法在 Rails 3 集成测试中测试签名的 cookie

    asp.net - IE8 后退按钮在 ASP .NET 页面上停止工作

    javascript - 如何清除 session cookie

    c# - 如何在不丢失 cookie 的情况下刷新我的 Selenium ChromeDriver 实例?