Изменение заголовков ответов в расширениях Chrome - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь изменить заголовок referer-policy с моим расширением Chrome, но это не влияет на заголовки ответа.

manifest.json:

{
  "name": "My Example Extension",
  "version": "1.0",
  "description": "",
  "permissions": [
    "webRequest",
    "webRequestBlocking",
    "*://*/*"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": true
  },
  "manifest_version": 2
}

background.js:

chrome.webRequest.onHeadersReceived.addListener(details => {
    let header = details.responseHeaders.find(e => e.name.toLowerCase() === 'referrer-policy');

    // Check if the header has been defined already
    if (typeof header !== 'undefined') {
        console.log ('Modifying header');
        header.value = 'strict-origin';
    }
    else {
        details.responseHeaders.push({ name: 'referrer-policy', value: 'strict-origin' });
    }

    return {responseHeaders: details.responseHeaders};
}, {urls: ["*://*/*"]}, ['blocking', 'responseHeaders']);

Я добавил выходные данные отладки, которые показывают, что код соответствующим образом изменяет или добавляет заголовок, но в самом браузере это не действует.

1 Ответ

0 голосов
/ 06 ноября 2018

Вы не возвращали измененные заголовки. Попробуйте с:

chrome.webRequest.onHeadersReceived.addListener(details => {
    let myResponseHeaders = details.responseHeaders;
    let header = myResponseHeaders.find(e => e.name == 'Referrer-Policy');

    // Check if the header has been defined already
    if (header) {
        console.log ('Modifying header');
        let headerIndex = myResponseHeaders.indexOf(header);
        myResponseHeaders.splice(headerIndex,1);
    }

    myResponseHeaders.push({ name: 'Referrer-Policy', value: 'strict-origin' });


    return {responseHeaders: myResponseHeaders};
}, {urls: ["*://*/*"]}, ['blocking', 'responseHeaders']);

Или со слегка измененным кодом, скопированным из документации :

chrome.webRequest.onHeadersReceived.addListener(
    function(details) {
      for (var i = 0; i < details.responseHeaders.length; ++i) {
        if (details.responseHeaders[i].name === 'Referrer-Policy') {
          details.responseHeaders[i].value = 'strict-origin';
          break;
        }
      }
      return {responseHeaders: details.responseHeaders};
    },
    {urls: ["<all_urls>"]},
    ["blocking", "responseHeaders"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...