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