解决了同源策略问题(Work around for the same origin policy p

2019-06-26 00:42发布

我有一个问题,即我具有由从一个域和来自不同网域的包含帧加载的父框架的一个框架集。 所包含的领域还设置框架装载前的cookie。 然而,因为“同一渊源考”的政策,大多数浏览器执行的,一个包含框架不会,如果它不是来自同一个域父传饼干。

不幸的是我没有对父框架(或URL)无法控制并为包含框架的URL是有效静态的。 因此,将信息传递给所包含的站点中唯一的办法是通过cookie。

我已经提出了唯一的解决办法是重新加载在父帧中的包含域,但这否定一些首先使用框架的价值。

有没有人有一个更好的解决有关此问题?

Answer 1:

有一对夫妇的周围获得的方法同源策略是防止你的I帧不说对方。 如果你控制两台服务器,那么你可以使用Flash的crossdomain.xml文件 。 如果你不控制的服务器之一,或者你想使用JavaScript,那么你就不得不使用“跨域代理”,比如这一个的Java或Python的或PHP 。

跨站点XHR是另一种选择,但并不是所有浏览器都支持。



Answer 2:

有很多方法可以做到这一点。 这里有两个,我用:

  1. 同时拥有父母和孩子从一个共同的来源加载脚本,使用标签。 以这种方式加载脚本没有同源问题,他们返回的数据将成为文档对象的一部分,可以通过文件加载其他脚本(这是AJAST的工作方式)进行交互。
  2. 在创建父域的反向代理,并且经由该代理加载帧。 到浏览器,看来他们都来自同一个域提供。 缺点是,这可能会影响缓存,并绕过,你可能会使用任何内容分发网络(例如阿卡迈)。


Answer 3:

还有一个在HTML 5使用于PostMessage这样做的正确方法。 在这里看到: http://ajaxian.com/archives/cross-window-messaging-with-html-5-postmessage



Answer 4:

还有一个想法在此,其中u可以使用跨域信息API从一帧发送消息到另一个。 这里有一个例子 ! 了解更多关于此 。



文章来源: Work around for the same origin policy problem