Safari 中视图状态 MAC 的验证失败

Posted

技术标签:

【中文标题】Safari 中视图状态 MAC 的验证失败【英文标题】:Validation of viewstate MAC failed in Safari 【发布时间】:2010-10-29 14:14:11 【问题描述】:

我有一个使用表单身份验证的网络应用程序。当我执行以下步骤时

    让登录 cookie 过期 点击需要登录用户的链接 用户被重定向到登录页面 点击浏览器后退按钮 用户再次被重定向到登录页面 使用有效的用户名/密码登录

我得到了这个异常 视图状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保配置指定相同的 validationKey 和验证算法。 AutoGenerate 不能在集群中使用。

这种情况只出现在 safari(windows 和 mac)中。 safari 与其他浏览器的根本区别在于,当我们在第 4 步中单击返回按钮时,safari 再次显示登录页面,而其他浏览器显示用户正在处理的上一个页面。

请在这方面提供帮助

【问题讨论】:

【参考方案1】:

从 Safari v 5.1.4 开始,我们遇到了与视图状态类似的问题。

我们的问题是因为我们在 window.onload 事件期间提交了一个表单,然后重定向到一个新页面。提交第二页时,我们会得到您报告的 peroration。

当我们提交第二个页面时,我们确定 safari 5.1.4 和 5.1.5 正在发送前一页的视图状态,导致验证错误

查看我在此线程中的回复ASP.NET Viewstate with Safari 5.x

【讨论】:

【参考方案2】:

虽然我在日志中看到了让我相信我面临与您相同的问题的错误,但我还无法在示例应用程序中重现该错误。我的猜测是超时页面的视图状态信息正在提交到登录页面,这是无效的。为了纠正这个问题,可以在登录页面生命周期的早期(可能是 Page_Init)放置一些东西,以识别何时重定向到登录页面(可能通过引用)并绕过视图状态验证。

【讨论】:

以上是关于Safari 中视图状态 MAC 的验证失败的主要内容,如果未能解决你的问题,请参考以下文章

设置 ViewStateUserKey 给我一个“视图状态 MAC 验证失败”错误

form submit时将__VIEWSTATE和__VIEWSTATEGENERATOR一起post到另外的页面,出现验证视图状态 MAC 失败。

机器密钥不起作用 - viewstate mac 失败

c# .net4.0验证视图状态 MAC 失败!试过网上的webconfig 节点添加配置,在网页page添加属性均无效。

HTML5 表单验证看不到消息弹出 Mac Safari

使用身份验证令牌的 Axios 请求有时会在 Safari 中失败