Internet Explorer重新加载IFrame

时间:2016-05-04 08:38:30

标签: javascript iframe internet-explorer-11 zk

我有一个网络表单(使用ZK框架),请在 http://www.example.com/myform

此表单包含在iframe中的主页(例如 http://www.anotherexample.com )中。

现在奇怪的是:

在Internet Explorer 9-11中,每当我对一个字段进行非聚焦时,IFrame就会完全重新加载(在那里进行一些字段检查)。但这只发生在IE中,只发生在IFrame中。如果我直接加载 http://www.example.com/myform ,则可以正常使用。

让整个事情变得奇怪的另一个细节是:如果我在IE中添加一个标签并在那里加载 http://www.example.com/myform ,iframe突然也能正常工作(重新加载后)。

不幸的是,IE在重新加载iframe时没有显示任何错误,所以我不知道发生了什么以及为什么。其他浏览器(Firefox,Chrome)与IFrame完美配合。

任何线索可能是什么原因?

1 个答案:

答案 0 :(得分:2)

在这种情况下,原因是P3P,如下所述:https://blogs.msdn.microsoft.com/ieinternals/2013/09/17/a-quick-look-at-p3p/

简而言之,Internet Explorer拒绝来自iframe等第三方上下文(不同域)的Cookie。这当然会导致上述行为:

  • 发送到ZK后端的任何请求(包括触发“焦点丢失”的内容)都没有会话ID(因为没有cookie),因此ZK将触发完全重新加载。
  • 在另一个标签页中打开ZK应用程序,可以创建一个cookie - 然后iframe中的ZK应用程序可以访问

解决方案是发送正确的P3P标头,在ZK中,这可以通过各种方式完成,例如通过.zul file header directive,在servlet过滤器中或直接在Web服务器上完成。完成此操作后,该应用程序在IE 9-11中按预期工作。