我观察到一个问题,我向服务器发出请求,并检查Chrome与IE中的HttpContext.Request.Cookies
集合是否不同。
我的流程如下:
- 为IE启动一个新的inPrivate浏览器,转到网站url
- 观察
HttpContext.Request.Cookies
是否具有三个值,siteLang,siteDir和isNative -
观察每个cookie的值分别为:
HttpContext.Request.Cookies["siteDir"].Value
=="ltr"HttpContext.Request.Cookies["siteLang"].Value
=="en-US"HttpContext.Request.Cookies["isNative"].Value
==真
-
为Chrome启动一个新的匿名浏览器,转到网站url
- 观察
HttpContext.Request.Cookies
是否具有一个值,siteDir - 观察
HttpContext.Request.Cookies["siteDir"].Value
的值为"ltr,siteLang=en-US,isNative=true"
我还观察到HttpContext.Request.Headers["Cookie"]
包含以下取决于浏览器的值:
-
siteLang=en-US;siteDir=ltr;isNative=true//IE
-
siteDir=ltr,siteLang=en-US,isNative=true//Chrome
所以Chrome似乎是用逗号分隔我的cookie,IE使用分号,Mvc不知道如何处理逗号。其他人看到了吗?如果我的诊断是正确的,我觉得这个问题应该非常普遍。任何意见都将不胜感激。
编辑
我已经查看了ASP.NET源代码,并在HttpRequest.cs中找到了以下代码片段(位于此处:[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?
我现在也注意到了类似的奇怪行为。但看看Fiddler,cookie列表实际上是以";"已分离。。
我使用的是Windows 10。我试着把我的承诺历史追溯到几个月前,但一直遇到这个问题。
这个问题似乎特别发生在SSL上。它能与操作系统/WindowsUpdate相关吗?