我目前正在开发一个 ASP.NET MVC 项目,并遇到了一个看起来很奇怪的错误。
在 ASP.NET MVC 模板表单中,始终会获得 AntiForgeryToken(因此我相信这是最佳实践)。然而,AntiForgeryTokens 似乎不能很好地与缓存配合使用。
例如,当我打开一个包含 AntiForgeryToken 表单的网站并复制浏览器窗口时,两个窗口都具有完全相同的 AntiForgeryToken,导致发布表单时出现异常。禁用缓存时不存在此问题(通过 ActionFilter NoCache,请参阅禁用整个 ASP.NET 网站的浏览器缓存 https://stackoverflow.com/questions/1160105/asp-net-mvc-disable-browser-cache).
所以我想我的问题是:事情应该是这样吗?除了禁用缓存之外还有其他方法可以解决这个问题吗?
特别是默认的 ASP.NET MVC 模板包含 AntiForgeryTokens 但不禁用缓存(因此容易出现上述错误)这一事实让我感到好奇。
提前致谢!
这是预期的行为。缓存可以很好地缓存答案,包括 AntiForgeryToken 的值。禁用表单上的缓存,特别是使用 AntiForgeryToken 的页面上的缓存。如果您进一步考虑这一点,如果您使用的是数据输入应用程序,您是否想要缓存数据输入表单?可能不会。然而,您确实希望缓存大量报告——即使它只是微缓存——一两秒。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)