首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firefox WebExtension -如何获取和修改跨域iframe的内容

问Firefox WebExtension -如何获取和修改跨域iframe的内容
EN

Stack Overflow用户
提问于 2017-03-23 06:11:14
回答 1查看 2.2K关注 0票数 12

我想知道如何在火狐JavaScript中访问和修改跨域iframe的内容。我理解普通JavaScript的局限性,以及修改跨域iframe将是XSS漏洞,但我相信在WebExtension中有一些方法是我找不到的。我认为这是因为遗留扩展清单有允许权限部分中跨域内容的选项。

当查看旧版本的FireFox扩展的旧代码时,某些网站的跨域内容的选项如下所示。尽管对于新的FireFox WebExtension,这不是文档中列出的特性。

代码语言:javascript
复制
"cross-domain-content": ["https://www.example.com"]

这是我的manifest.json文件。

代码语言:javascript
复制
{
  "manifest_version": 2,
  "name": "Test Extension",
  "version": "1.0",
  "content_scripts": [
    {
      "matches": ["*://*/*"],
      "all_frames": true,
      "js": [
        "js/main.js"
      ]
    }
  ],
  "permissions": [
    "*://*/*",
    "<all_urls>",
  ]
}

这是我的main.js文件。

代码语言:javascript
复制
// Code is being run within an iframe ("all_frames": true)
if (window != window.top) {
  // Attempt to log the source of the parent iframe
  // If cross domain, met throws - Error: Permission denied to access property "frameElement"
  console.log(window.parent.frameElement.src);
}

正如您在main.js文件中所看到的,当试图打印父文件的源时,会引发错误,如下所示。

错误:拒绝访问属性"frameElement“的权限

我想知道如何允许FireFox WebExtension访问和修改跨域iframe的内容。我不确定这是否是在清单中设置正确权限的问题,还是我必须使用WebExtension API或其他什么,我只是在上面找不到任何东西。

此外,如果有人可以参考或提供一些例子,以这种方式修改iframe的内容,这将是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-23 17:32:26

不可能直接访问跨域内容。

直接访问跨域内容是不可能的,或者至少不应该是可能的。虽然可能有办法绕过这一限制(我还没有看完),但这将不是有意的,将被视为一个bug。

与其他类型的火狐扩展不同,WebExtensions被授予访问内容的权限,最多是在一个域的基础上。这与您在"<all_urls>" permissions中指定的manifest.json permissions或"*://*/*"无关。指定多个域权限不会打开对跨域内容的访问权限。开放对跨域内容的访问将是一个更复杂的问题,这可能会有它自己的一组与安全相关的错误。因此,在permissions中指定多个域只允许将脚本/CSS注入多个匹配的URL,而不需要对跨域内容进行特殊访问。因此,不应该有一种方法可以直接访问跨域iframe中的内容。

必须使用在该帧中注入的脚本访问跨域内容。

如果您想要访问跨域内容,则必须将脚本插入到iframe或顶层窗口中,您希望访问该脚本。如前所述,注入这样的脚本/CSS的能力是由permissions控制的事情之一。然后,您可以使用消息传递(从/到顶部帧/子帧中的内容脚本,或通过后台脚本中继)在跨域框架中注入的脚本之间进行通信。

考虑到您已经在向<all_urls>和all_frames中注入脚本,您只需要实现上面提到的在它们之间进行通信的方法之一。然后,您需要从其他脚本请求所需的信息,或者将信息传递给其他脚本进行处理。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42968473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档