我有一个网络表单(使用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完美配合。
任何线索可能是什么原因?
答案 0 :(得分:2)
在这种情况下,原因是P3P,如下所述:https://blogs.msdn.microsoft.com/ieinternals/2013/09/17/a-quick-look-at-p3p/
简而言之,Internet Explorer拒绝来自iframe等第三方上下文(不同域)的Cookie。这当然会导致上述行为:
解决方案是发送正确的P3P标头,在ZK中,这可以通过各种方式完成,例如通过.zul file header directive,在servlet过滤器中或直接在Web服务器上完成。完成此操作后,该应用程序在IE 9-11中按预期工作。