API выборки Firefox: Как опустить заголовок "origin" в запросе?
Если вы сделаете запрос на выборку в Firefox WebExtension, он автоматически установит заголовок "origin". Например, когда я запускаю этот код внутри WebExtensions...
fetch('http://example.com/')
... результирующий запрос содержит заголовок: "origin: moz-extension://539a0d5b-60d9-4726-b3de-27d6979edc26"
Запуск того же кода в Chromium не установит заголовок. (Обновление: это не всегда так, поскольку Chrome может также добавить заголовок: "origin: chrome-extension://...".)
Есть ли возможность отправить запрос без "происхождения"?
Я не нашел вариант в API выборки. Итак, пока единственное решение, которое я вижу, это удалить заголовок с помощью API webRequest, но это кажется слишком сложным.
1 ответ
Firefox и Chrome автоматически заполняют origin
заголовок, когда WebExtension отправляет запросы с использованием API выборки. В настоящее время нет никакой опции API, чтобы предотвратить это.
Если вы не хотите такого поведения, у вас есть два варианта:
- Используйте старый API XMLHttpRequest вместо получения
- Вручную раздеть
origin
заголовок с использованием API webRequest
Вариант 1 будет работать, так как origin
заголовок устанавливается только API выборки. Для варианта 2 вам нужно будет установить onBeforeSendHeaders
Обработчик для удаления заголовка до того, как запрос покинет браузер:
function originWithId(header) {
return header.name.toLowerCase() === 'origin' &&
(header.value.indexOf('moz-extension://') === 0 ||
header.value.indexOf('chrome-extension://') === 0);
}
chrome.webRequest.onBeforeSendHeaders.addListener(
(details) => {
return {
requestHeaders: details.requestHeaders.filter(x => !originWithId(x))
}
},
{urls: ["<all_urls>"]},
["blocking", "requestHeaders"]
);
Чтобы использовать API, вам нужно будет добавить "webRequest"
а также "webRequestBlocking"
к разрешениям в manifest.json
,