【问题标题】:ASP.NET cookies missing in HttpContext.Request.Cookies. Comma vs semi-colon separated cookies from Chrome/IEHttpContext.Request.Cookies 中缺少 ASP.NET cookie。来自 Chrome/IE 的逗号与分号分隔的 cookie
【发布时间】:2015-04-28 02:50:58
【问题描述】:

我发现我向服务器发出请求并检查 HttpContext.Request.Cookies 集合在 Chrome 和 IE 中的不同之处。

我的流程如下:

  1. 为 IE 启动一个新的 inPrivate 浏览器,转到站点 url
  2. 观察HttpContext.Request.Cookies 具有三个值,siteLangsiteDirisNative
  3. 观察每个cookie的值分别为:

    • HttpContext.Request.Cookies["siteDir"].Value == "ltr"
    • HttpContext.Request.Cookies["siteLang"].Value == "zh-CN"
    • HttpContext.Request.Cookies["isNative"].Value == 真
  4. 为 Chrome 启动一个新的隐身浏览器,转到网站网址

  5. 观察HttpContext.Request.Cookies一个值,siteDir
  6. 观察HttpContext.Request.Cookies["siteDir"].Value 的值为"ltr, siteLang=en-US, isNative=true"

我还观察到 HttpContext.Request.Headers["Cookie"] 包含以下取决于浏览器的值:

  • siteLang=zh-CN;站点目录=ltr; isNative=true // IE

  • siteDir=ltr, siteLang=en-US, isNative=true // Chrome


因此,Chrome 似乎用逗号分隔我的 cookie,而 IE 使用分号,而 Mvc 无法弄清楚如何处理逗号。有没有其他人看过这个?如果我的诊断是正确的,我觉得这个问题应该非常普遍。非常感谢任何输入。

编辑

我查看了 ASP.NET 源代码并在 HttpRequest.cs 中找到了以下代码 sn-p(可在此处找到:[http://referencesource.microsoft.com/#System.Web/HttpRequest.cs][1]):

while (i < l) {
    // find next ';' (don't look to ',' as per 91884)
    j = i;
    while (j < l) {
        ch = s[j];
        if (ch == ';')
            break;
        j++;
    }
    // create cookie form string
    ...{continued}

任何想法我如何获取有关 91884 的信息以了解他们为什么忽略逗号分隔的 cookie?

【问题讨论】:

    标签: c# asp.net asp.net-mvc google-chrome cookies


    【解决方案1】:

    我现在也注意到这样的奇怪行为。 但是看看 Fiddler,cookie 列表实际上是作为 ';' 发送的分开..

    我使用的是 Windows 10。我尝试将我的提交历史回滚到几个月前,但一直遇到问题。

    这个问题似乎特别发生在 SSL 上。会不会是 OS/WindowsUpdate 相关的?

    【讨论】:

    • 重要提示:当我打开 fiddler 时,我看到完全不同的结果,cookie 按预期运行。我也在 Win 10 上,将进一步调查
    • 我可以确认,确实是当 Fiddler 参与其中时,它才会改变。
    • 作为调试/本地模式下的一个肮脏的解决方法,我想出了: var cookieHeader = HttpContext.Current.Request.Headers["Cookie"]; if (cookieHeader != null) HttpContext.Current.Request.Headers.Set("Cookie", cookieHeader.Replace(",", ";"));
    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 2019-08-26
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多