【发布时间】:2013-07-22 05:20:33
【问题描述】:
我目前正在处理一个 ASP.NET MVC 项目,遇到了一个看起来很奇怪的错误。
在 ASP.NET MVC 模板中,表单总是得到一个 AntiForgeryToken(因此让我相信这是一个最佳实践)。然而,AntiForgeryTokens 似乎不适用于缓存。
例如,当我打开一个包含 AntiForgeryToken 的表单的站点并复制浏览器窗口时,两个窗口都具有完全相同的 AntiForgeryToken,从而导致在发布表单时出现异常。禁用缓存时不存在此问题(通过 ActionFilter NoCache,请参阅Disable browser cache for entire ASP.NET website)。
所以我想我的问题是:应该是这样吗?除了禁用缓存之外,还有其他方法可以解决问题吗?
尤其是默认的 ASP.NET MVC 模板包含 AntiForgeryTokens 但不禁用缓存(因此对上述错误持开放态度)这一事实让我感到疑惑。
提前致谢!
【问题讨论】:
-
你能发布你的代码和确切的错误吗?
Html.AntiforgeryToken()每次都会生成一个新的令牌,所以在两个浏览器窗口中你应该有不同的值 -
如果浏览器不向服务器查询第二个浏览器窗口但使用其缓存,则不会。
标签: caching asp.net-mvc-4 antiforgerytoken