C# HttpContext.Request.cookies中缺少ASP.NET Cookie。Chrome/IE中逗号与分号分隔的Cookie
我观察到一个问题,我向我的服务器发出请求,并检查C# HttpContext.Request.cookies中缺少ASP.NET Cookie。Chrome/IE中逗号与分号分隔的Cookie,c#,asp.net,asp.net-mvc,google-chrome,cookies,C#,Asp.net,Asp.net Mvc,Google Chrome,Cookies,我观察到一个问题,我向我的服务器发出请求,并检查HttpContext.request.Cookies集合在Chrome和IE中是否不同 我的过程如下: 为IE启动新的inPrivate浏览器,转到站点url 观察HttpContext.Request.Cookies以获得三个值,siteLang、siteDir、isNative 观察每个cookie的值分别为: HttpContext.Request.Cookies[“siteDir”]。值 HttpContext.Request.Cook
HttpContext.request.Cookies
集合在Chrome和IE中是否不同
我的过程如下:
HttpContext.Request.Cookies
以获得三个值,siteLang、siteDir、isNativeHttpContext.Request.Cookies[“siteDir”]。值
HttpContext.Request.Cookies[“siteLang”]。值
==trueHttpContext.Request.Cookies[“isNative”]。值
HttpContext.Request.Cookies
是否有one值,siteDir我还观察到
HttpContext.Request.Headers[“Cookie”]
包含以下依赖于浏览器的值:
- siteLang=en-US;siteDir=ltr;isNative=true//IE
- siteDir=ltr,siteLang=en-US,isNative=true//Chrome
所以Chrome似乎是用逗号分隔我的cookies,IE使用分号,Mvc不知道如何处理逗号。还有谁见过这个吗?我觉得如果我的诊断是正确的,这个问题应该会非常普遍。非常感谢您的任何意见 编辑 我查看了ASP.NET源代码,在HttpRequest.cs中找到了以下代码段(在此处找到:[):
while(i
你知道我是如何获得91884的信息来理解他们为什么忽略逗号分隔的cookies的吗?我现在也注意到了这种奇怪的行为。 但看看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(“,”,“;”);
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}