我目前正在处理一个 ASP.NET MVC 项目,并遇到了一个看起来很奇怪的错误。
在 ASP.NET MVC 模板中,表单总是得到一个 AntiForgeryToken(因此让我相信这是一个最佳实践)。然而,AntiForgeryTokens 似乎不适用于缓存。
例如,当我打开一个包含 AntiForgeryToken 的表单的站点并复制浏览器窗口时,两个窗口都具有完全相同的 AntiForgeryToken,从而导致在发布表单时出现异常。禁用缓存时不存在此问题(通过 ActionFilter NoCache,请参阅禁用整个 ASP.NET 网站的浏览器缓存)。
所以我想我的问题是:这应该是这样吗?除了禁用缓存之外,还有其他方法可以解决问题吗?
尤其是默认的 ASP.NET MVC 模板包含 AntiForgeryTokens 但不禁用缓存(因此对上述错误开放)这一事实让我感到奇怪。
提前致谢!