Как я могу захватить определенные xmlhttprequests в расширении Firefox? - PullRequest
0 голосов
/ 15 февраля 2019

Я пишу расширение Firefox и хочу перехватывать запросы, отправленные на определенный URL.

Я добавляю слушателя к событию, browser.webRequest.onCompleted из фонового скрипта.Проблема заключается в том, что слушатель срабатывает только в том случае, если я добавляю <all_urls> в раздел разрешений манифеста и параметр URL в фильтре при добавлении слушателя.

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"]
    }
}

Вот что я получаю: screenshot

Но если я изменю манифест на:

"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 ??

1 Ответ

0 голосов
/ 15 февраля 2019

Цитирование MDN :

Для перехвата ресурсов, загружаемых страницей (таких как изображения, сценарии или таблицы стилей), расширение должно иметь разрешение хоста для ресурса а также для главной страницы запрашивающей ресурс.Например, если страница в "https://developer.mozilla.org" загружает изображение из" https://mdn.mozillademos.org",, тогда расширение должно иметь оба разрешения хоста, если оно должно перехватывать запрос изображения.

Цитирование документации по Chrome API :

Начиная с Chrome 72, расширение сможет перехватывать запрос только в том случае, если у него есть разрешения хоста как на запрошенный URL-адрес, так и на инициатор запроса .

Так что вам нужно добавить "https://watch.euw.lolesports.com/*" в манифесте "permissions".

...