这是发生了什么:
我在[{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
答案 0 :(得分:2)
您可以使用片段ID消息传递,这是一种使用window.location.hash(#后面的URL部分)进行通信的hack。这个test page有一个例子。还有Dojo这样的库可以促进这一点。
如果您只需要支持最新的浏览器,则可以使用postMessage。
答案 1 :(得分:2)
除了Matthew上面提到的postMessage和location hash之外,您可能还想考虑使用本地运行的代理服务器。代理服务器将侦听端口80,并根据http请求中指定的域名转发到相应的目标端口。然后,您只需在端口80上正常访问您的网站,事情应该正常工作。