【问题标题】:How can I capture specific xmlhttprequests in Firefox extension?如何在 Firefox 扩展中捕获特定的 xmlhttprequests?
【发布时间】:2019-07-09 09:28:33
【问题描述】:

我正在编写一个 firefox 扩展程序,并希望捕获发送到某个 url 的请求。

我正在为事件添加一个侦听器,browser.webRequest.onCompleted 来自后台脚本。问题是,只有当我在清单的权限部分添加 <all_urls> 并在添加侦听器时在过滤器中添加 urls 选项时,侦听器才会被触发。

src/background.js:

function saveData(result) {
    console.log(result);
}

browser.webRequest.onCompleted.addListener(
    saveData,
    {
        urls: ["<all_urls>"],
        types: ['xmlhttprequest']
    });

Manifest.json:

{
    "manifest_version": 2,
    "name": "LolEsports Extension",
    "version": "1.0.0",

    "permissions": [
        "<all_urls>",
        "webRequest",
        "webRequestBlocking",
        "storage"
    ],

    "background": {
        "scripts": ["src/background.js"]
    }
}

这是我得到的:

但如果我将清单更改为:

"permissions": [
     "https://prod-relapi.ewp.gg/persisted/gw/*",
     "webRequest",
     "webRequestBlocking",
     "storage"
 ]

在 background.js 中:

browser.webRequest.onCompleted.addListener(
    saveData,
    {
        urls: ["https://prod-relapi.ewp.gg/persisted/gw/*"],
        types: ['xmlhttprequest']
    });

控制台中没有显示任何内容。我错过了什么让听众对特定的 url 模式感到兴奋??

【问题讨论】:

  • @wOxxOm 非常感谢。现在可以了。你介意把你的评论变成答案吗?

标签: javascript google-chrome-extension firefox-addon-webextensions


【解决方案1】:

Quoting MDN:

要拦截页面加载的资源(例如图像、脚本或样式表),扩展程序必须拥有资源以及请求资源的主页的主机权限。例如,如果“https://developer.mozilla.org”的页面从“https://mdn.mozillademos.org”加载图片,那么一个扩展要想拦截图片请求,就必须同时拥有主机权限。

Quoting Chrome API documentation:

从 Chrome 72 开始,扩展程序只有在对请求的 URL 和请求发起者都具有主机权限的情况下才能拦截请求。

所以你需要在清单的"permissions" 中添加"https://watch.euw.lolesports.com/*"

【讨论】:

  • 我不知道我是怎么错过 MDN 中的那个部分的。再次感谢您。
猜你喜欢
  • 2012-08-13
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多