動作環境

  • Google Chrome 108
  • Manifest V3

内容

Chrome拡張から送られるHTTPリクエストについて、 ローカルで動くHTTPサーバhttp://127.0.0.1:8000のOriginチェックを回避するため、 Originヘッダを削除します。

declarativeNetRequest機能を使用します。manifest.jsonpermissionsdeclarativeNetRequestWithHostAccess(Chrome 96+)の追記が必要です。

加工するHTTPリクエストを、この拡張機能から送られるHTTPリクエストに絞るため、initiatorDomainsオプション(Chrome 101+)を使用しています。将来的に、より厳密な検査ができるオプションが追加される可能性があります。

また、CORSを回避するには、manifest.jsonhost_permissionshttp://127.0.0.1:8000/*を追記します。

XMLHttpRequest and fetch access to those origins without cross-origin restrictions (though not for requests from content scripts, as was the case in Manifest V2).

background.js

// license: CC0
chrome.declarativeNetRequest.updateDynamicRules({
  removeRuleIds: [1],
  addRules: [
    {
      id: 1,
      priority: 1,
      action: {
        type: 'modifyHeaders',
        requestHeaders: [
          { 'header': 'Origin', 'operation': 'remove' },
        ],
      },
      condition: {
        urlFilter: '127.0.0.1:8000/*',
        initiatorDomains: [chrome.runtime.id], // chrome-extension://{extension_id}
      },
    },
  ],
})