我有3个.aspx文件。例如
GrandFather.aspx, Father.aspx and Child.aspx
GrandFather.aspx页面有一个iframe,iframe的源代码是Father.aspx。表格Father.aspx,我使用
调用了Child.aspxResposne.Redirect("Child.aspx");
因此,使用Child.aspx更改了iframe内容。现在,Child.aspx有一些在回发中提交的表单数据。浏览器IE,FireFox,谷歌Chrome已经正常工作,但在Safari中,它显示以下错误,
System.Web.HttpException: A field validation of viewstate MAC. If a Web Farm
or cluster is hosted by this application, please check that you have to specify
the configuration is the same validationKey and validation algorithm <machineKey>.
AutoGenerate can not be used in the cluster.
这个问题背后的原因是什么?我该如何解决?
我已检查过iframe的来源,即使在Response.Redirect之后它也始终显示为Father.aspx。
我使用的是.NET 2.0,IIS是6.0。
首次回发时,Safari浏览器显示错误。但是,对于下一次尝试,错误就会消失。
答案 0 :(得分:0)
我的公司最近遇到了Safari + IFrame + Cookies的问题 基本上,Safari第一次加载Iframe时不接受任何cookie。这当然会导致各种破坏,导致所有身份验证和会话无法正常工作。
Here is a related question that has to deal with Same-Origin-Policy。
它表示,一旦用户与Iframe页面进行交互,Safari就会表现出来。他们提出了一种解决方法,即使用JavaScript POST
一个空表单,Safari实际上认为这是“用户交互”。页面刷新后,Safari将在此后正常运行。
我们的解决方案是简单地为Safari用户突破iframe。这不是一个理想的解决方案,但我们真的需要它们。