我想从iFrame内部读取window.top.location.origin
父级和iFrame位于不同的HTTPS域上
例如,试图访问会在Chrome中引发安全错误[DOMException: Blocked a frame with origin "..." from accessing a cross-origin frame.]
有没有可能在不触发错误的情况下做到这一点?
我需要window.top
的来源,因为我基于该来源发送不同的postMessages。
我知道这是旧的,但也许它能帮助其他人:
完整的父URL将在<iframe/>
中显示为document.referrer
。这样,您就可以在本地解析它,以找到您可能需要的URL细节。
if (document.referrer !== location.href) {
let foo = document.createElement('a');
foo.href = document.referrer;
console.log('origin is:', foo.origin);
}
当然,这要归功于锚标记的内置解析。隐藏的宝石~!
由于同源策略,来自不同源的iframe中的JavaScript将无法与其父框架通信。如果你有权访问为iframe服务的服务器,你可以启用CORS,否则我认为你运气不好