从嵌入式iframe内的外部页面访问信息

时间:2017-02-15 14:24:31

标签: javascript html iframe

我写了一个页面,来自域名banana.example.com。我拥有那个域名。该页面的目的是将其嵌入mango.example.com的页面中,这是我不拥有的。 (相同的“大域”,但不是完全相同的域。)这很好。我给Mango的人们提供了URL,他们可以将我的Banana页面嵌入到他们网站的iframe中。

我希望我的页面显示略有不同的内容,具体取决于它正在嵌入的mango.example.com上的哪个页面。

如果我写:

console.log(window.parent.window.location);

我将完整的URL作为Location对象打印到控制台,但我无法访问该对象的任何属性(例如,href,pathname)或使用隐含或显式方法来对位置对象进行字符串化。

有什么方法可以获取有关我的网页嵌入的页面的信息?网址,标题,什么? (出于这个问题的目的,请假设我只对banana.example.com有权限,并且不能要求mango.example.com上的人做任何事情。)

1 个答案:

答案 0 :(得分:0)

这是因为浏览器的CORS(跨源资源共享)。这个问题的解决方案是将消息发布到请求提供信息的外部页面,然后信息会向您的iframe发布一个响应,该响应将有一个处理程序。阅读postMessage here。请注意,如果您不控制外部页面,您将无法像这样解决问题。您需要说服Mango的所有者在iframe请求提供信息的地方收到您的消息,并使用postMessage对其进行回复。