在本地开发时,iframe权限被拒绝错误:我的选择是什么?

时间:2010-06-04 12:20:01

标签: javascript security iframe cross-domain localhost

这是发生了什么:

我在[{1}}上托管了一个应用A,在a.mycompany.com上托管了一个应用B

应用b.mycompany.com包含一个iframe,其中包含应用A中包含的网页。

B

我需要与iframe进行父对话,或者与父进行iframe对话。

当它在服务器上时工作正常,但是当我在本地开发时,我有两个不同的服务器在不同的端口上运行,所以我必须通过以下方式访问它们:

<!-- In A's index.html: -->
<iframe src="http://b.mycompany.com/something.html" >

这会导致安全性错误,因为您无法使用JS与来自不同域/子域的iframe或使用其他端口进行通信。

我该怎么办?


相关服务器故障问题:https://serverfault.com/questions/148171/how-to-map-localhost8080-to-simply-localhost

2 个答案:

答案 0 :(得分:2)

您可以使用片段ID消息传递,这是一种使用window.location.hash(#后面的URL部分)进行通信的hack。这个test page有一个例子。还有Dojo这样的库可以促进这一点。

如果您只需要支持最新的浏览器,则可以使用postMessage

答案 1 :(得分:2)

除了Matthew上面提到的postMessage和location hash之外,您可能还想考虑使用本地运行的代理服务器。代理服务器将侦听端口80,并根据http请求中指定的域名转发到相应的目标端口。然后,您只需在端口80上正常访问您的网站,事情应该正常工作。