3

我正在从 http 下的网页打开一个位于 https 下的弹出窗口。当我尝试从弹出窗口中使用命令 window.opener.location.(href/str/port/domain.. etc) 来获取开启页面的 url 时,我得到一个“权限被拒绝”。我也一直在 Firefox 上使用 Firebug 来测试这一点。有什么办法可以通过使用另一个命令或做其他事情来绕过它。如果我在 https 下打开 opener url,那么我可以从弹出窗口中访问它。我猜这与非安全端口相比必须位于安全端口上。我在想这应该是可能的,因为我试图从安全页面获取非安全页面的信息。

基本上,我正在尝试扫描打开页面的 url 并检查它是否包含某个子字符串,我想执行某个功能。实现这一目标的任何替代建议也将不胜感激。

4

1 回答 1

0

由于同源策略,您会看到错误。当比较两个域时,它会考虑协议、域名和端口。在您的情况下,协议不同,因此您会收到“Permission denied”异常。您可以尝试以下技巧 - 当您打开弹出窗口时,将父级的 url 分配给 popup window.name,这应该可用于弹出式 javascript。此外,您可以在末尾使用哈希构造弹出窗口的 url,例如:https://mydomain.com/page.html#http://mydomain.com/parent.html

可以执行一些其他技巧来绕过 SOP

于 2012-08-08T19:06:14.627 回答