我想从iFrame中读取window.top.location.origin
父级和iFrame位于不同的HTTPS域中
例如,尝试访问会在Chrome中引发安全性错误
[DOMException: Blocked a frame with origin "..." from accessing a cross-origin frame.]
是否可以在不触发错误的情况下执行此操作?
我需要window.top
的来源,因为我根据该来源发送了不同的postMessages。
答案 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,否则我认为你运气不好