【发布时间】:2015-04-28 02:50:58
【问题描述】:
我发现我向服务器发出请求并检查 HttpContext.Request.Cookies 集合在 Chrome 和 IE 中的不同之处。
我的流程如下:
- 为 IE 启动一个新的 inPrivate 浏览器,转到站点 url
- 观察
HttpContext.Request.Cookies具有三个值,siteLang、siteDir、isNative -
观察每个cookie的值分别为:
-
HttpContext.Request.Cookies["siteDir"].Value== "ltr" -
HttpContext.Request.Cookies["siteLang"].Value== "zh-CN" -
HttpContext.Request.Cookies["isNative"].Value== 真
-
为 Chrome 启动一个新的隐身浏览器,转到网站网址
- 观察
HttpContext.Request.Cookies有一个值,siteDir - 观察
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