【发布时间】:2018-03-22 20:25:24
【问题描述】:
我们有一个包含多个表单的页面。每个都有自己的@Html.AntiForgeryToken()。在我的本地机器上一切都很好。
我们已部署到 Azure (PAAS),但 __RequestVerificationToken不是在每个请求上都创建。有时它在那里,有时我得到 The required anti-forgery cookie is not present,而且我很少得到 tokens do not match 错误。
在这一点上我完全一无所知。我不知道我们的代码或 Azure 环境是否有问题?这些形式中没有 ajax。
我们已将<machineKey> 部分添加到我们的web.config。没有缓存。有时它会从第一次出现在新设备上。
【问题讨论】:
-
你找到答案了吗?
-
不,我们必须删除防伪检查(它用于简单的集成表格。对此没有什么重要的)。我们的 Azure 设置有两个逻辑 CD,所以我猜这与处理请求和响应的不同 CD 有关。这只是我的猜测。
-
听到这个消息我很难过,但我认为这应该不是问题,除非您在表单操作中也定义了域(然后将用户重定向到另一张 CD POST,但我怀疑情况是否如此,因为如果您使用 UrlHelper,则不会在域之间重定向用户)。
-
注意你可以在一个页面内使用多个带有
antifourgerytoken的表单,第二个你不能通过GET请求发送,第三个你不能在调用Html.AntiForgeryToken(salt)时使用不同的盐值,第四个使用AJAX可能需要额外的工作来确保令牌包含在POST中,所以除非你分享你的一些代码,否则我无法回答这个问题! -
您在尝试提交表单时遇到过失败,还是只是在某处审核了失败?
标签: asp.net-mvc azure antiforgerytoken