我目前正在开发一个ASP.NET MVC项目,并且我使用azure AD连接到我的网站。
当我首先在Chrome上尝试时,例如,这些是创建的Cookie:
一切正常!但如果我在不停止IIS Express的情况下在FireFox上启动相同的网站,我会收到无数的cookie,服务器停止并说:
HTTP 400.请求标头的大小太长。
得到了这个cookie列表:
如果我关闭IIS Express并再次使用FireFox重试,它只创建了3个cookie并且工作正常......
有人可以解释一下发生了什么吗?
PS:请不要给出解决方案"你需要删除旧的cookies"它不是问题所在......即使我没有任何饼干它也不起作用......没有什么比我使用的浏览器更重要了,我已经尝试了6种不同的浏览器,每次只有第一个已经推出的浏览器是唯一有效的浏览器。提前感谢您的帮助!
答案 0 :(得分:0)
原因/调查 我认为您有一些安全或需要身份验证的API或AJAX调用。更改浏览器后,不再对您的请求进行身份验证,并且在AJAX或API上调用时,它将开始创建cookie。我敢肯定,如果您将登录FireFox中的应用程序,它将停止执行该操作。我不认为这是特定于浏览器的问题。如果将应用程序从Firefox迁移到IE,它将执行相同的操作。
解决方案 现在,您必须确保当您未登录或请求未通过身份验证时,您重定向到登录页面并停止进行未经身份验证的呼叫。
其他解决方案是按照MikeDotNet解决方案删除所有随机数cookie。
您会发现有人暗示这是Microsoft Nuget包Microsoft.Owin.Security.OpenIdConnect中的错误,如果使用3.0.0,它将解决此问题。在某些情况下它可以工作,但我发现该解决方案对IIS很有用,但不适用于Cloud。