我有一个https页面(https://example.com/main.php),它具有带非HTTPS源(http://example.com/inner.php)的iframe。这两个文件都在同一台服务器上 - 只有一个是使用https访问的,另一个则不是。我需要的非HTTPS页面可以使用下面的代码的HTTPS main.php
网页上执行JavaScript作为parent.myfunction()
允许HTTP iFrame在HTTPS父框架上调用JavaScript
然而,当我尝试,我得到了以下错误:
Unsafe JavaScript attempt to access frame with URL https://example.com/main.php from frame with url http://example.com/inner.php . Domains, protocols and ports must match.
我已经设置document.domain = 'example.com'
这两个文件,我认为这会解决它,但是,它不。有什么办法可以让框架在父框架上执行javascripts,反之亦然?如果是这样,这会对安全产生什么影响? PS:对于那些建议在两个页面中只使用https或http的人,我正在研究这个问题。但是,由于iframe页面中存在进程,由于服务器负载问题,这可能不是一个可行的选项。
您的示例不起作用:因为_whole_域(包含所有现有和不存在的子域)属于paypal,所以无法使用域“my.paypal.com”。所以我认为这不是这个安全限制的原因。原因是一样的,就好像你想在https站点上通过http加载任何内容一样。 – rudi 2012-11-05 18:10:15
@鲁道夫我不认为你完全明白我说的话。攻击者返回一个包含两个*帧*的页面。一个框架包含真正的https://paypal.com。另一个包含恶意的JavaScript。恶意JavaScript“是从paypal.com发送的” - 但实际上,我拦截了请求并返回了我想要的任何内容(可能是因为它不是安全的连接)。因此,两个框架“通过同源检查”,但结果是灾难。 – Borealid 2012-11-05 20:25:24