获取跨域HTTPS iFrame的父文档源

时间:2014-10-03 17:34:27

标签: javascript iframe cross-domain postmessage

我想从iFrame中读取window.top.location.origin 父级和iFrame位于不同的HTTPS域中 例如,尝试访问会在Chrome中引发安全性错误 [DOMException: Blocked a frame with origin "..." from accessing a cross-origin frame.]

是否可以在不触发错误的情况下执行此操作?

我需要window.top的来源,因为我根据该来源发送了不同的postMessages。

2 个答案:

答案 0 :(得分:2)

我知道这是旧的,但也许它有助于其他人:

完整的父网址会在<iframe/>显示为document.referrer。有了它,您可以在本地解析它以查找您可能需要的URL细节。

if (document.referrer !== location.href) {
  let foo = document.createElement('a');
  foo.href = document.referrer;
  console.log('origin is:', foo.origin);
}

当然,这要归功于锚标记的内置解析。隐藏的宝石〜!

答案 1 :(得分:0)

由于同源策略,来自不同来源的iframe中的JavaScript将无法与其父帧进行通信。如果你有权访问服务于iframe的服务器,你可以启用CORS,否则我认为你运气不好