防伪 cookie 令牌和表单字段令牌不匹配 - Orchard 1.8.1
The anti-forgery cookie token and form field token do not match - Orchard 1.8.1
我使用@Html.AntiForgeryTokenOrchard() 方法来呈现令牌。提交表单时出现此错误。该站点位于 Azure Web 上。当我使用原始站点名称 xxxx.azurewebsites.net 时,令牌有效。只有当我使用映射的域名时,我才会收到此错误。该错误与浏览器无关,但是如果我强制更新站点 (CTRL+F5) 和 post 表单,则令牌有效。如果我打开一个新的隐身浏览器 window 新会话再次失败。
我在 web.config 中配置了机器密钥。
请帮助我摆脱这个烦人的错误。任何帮助表示赞赏。
谢谢。
您不能在同一个表单上同时具有防伪和缓存功能,因为防伪令牌不可重复使用并且是响应的一部分。因此,您需要在它们之间做出选择。任何包含不可能伪造的信息的表格(几乎任何表格)都应该具有防伪功能。所以默认的解决方案应该是禁用缓存,在呈现表单的控制器操作上使用 [OutputCache]
属性。如果您更喜欢缓存而不是防伪造,现在可以逐个关闭防伪造功能,使用作为表单目标的操作的 [ValidateAntiForgeryTokenOrchard]
属性。
但同样,禁用缓存应该是首选。
我使用@Html.AntiForgeryTokenOrchard() 方法来呈现令牌。提交表单时出现此错误。该站点位于 Azure Web 上。当我使用原始站点名称 xxxx.azurewebsites.net 时,令牌有效。只有当我使用映射的域名时,我才会收到此错误。该错误与浏览器无关,但是如果我强制更新站点 (CTRL+F5) 和 post 表单,则令牌有效。如果我打开一个新的隐身浏览器 window 新会话再次失败。
我在 web.config 中配置了机器密钥。
请帮助我摆脱这个烦人的错误。任何帮助表示赞赏。 谢谢。
您不能在同一个表单上同时具有防伪和缓存功能,因为防伪令牌不可重复使用并且是响应的一部分。因此,您需要在它们之间做出选择。任何包含不可能伪造的信息的表格(几乎任何表格)都应该具有防伪功能。所以默认的解决方案应该是禁用缓存,在呈现表单的控制器操作上使用 [OutputCache]
属性。如果您更喜欢缓存而不是防伪造,现在可以逐个关闭防伪造功能,使用作为表单目标的操作的 [ValidateAntiForgeryTokenOrchard]
属性。
但同样,禁用缓存应该是首选。