我有我的ASP.NET MVC5应用程序,该应用程序托管在IIS上,最近我已将其身份验证从“ Windows”更改为“匿名”,因为我们希望为某些API调用提供AAD令牌。
我们看到了问题。每当从Internet Explorer打开应用程序时,都会有例外:
必填的防伪表单字段“ __RequestVerificationToken”不存在。
我们在操作方法中添加了Authorize
属性,并在@Html.AntiForgeryToken()
文件中添加了.cshtml
。
同一应用程序可以在Microsoft Edge和Chrome中正常运行。
该应用程序应该可以在IE中运行,并且可以在Edge和Chrome上运行
答案 0 :(得分:0)
由于它可以在Chrome,FireFox和Edge中正常工作,因此此问题不是由代码引起的。它必须与IE中的某些设置有关。
防伪助手的方式
@Html.AntiForgeryToken()
可行的方法是在页面中注入一个名为__RequestVerificationToken
的隐藏表单域,并且还将cookie设置到浏览器中。将表单发回时,将对两者进行比较,如果它们不匹配或缺少cookie,则会引发错误。
请检查Opera的Cookie设置,确保Opera接受@Html.AntiForgeryToken()
设置的cookie。
关于如何在IE中启用Cookie:https://www.whatismybrowser.com/guides/how-to-enable-cookies/internet-explorer
也许这会对您有所帮助。