Я пытаюсь сделать свое первое расширение Chrome, и это был довольно опыт обучения. Я почти закончил, но этот последний кусок убивает меня.Могу ли я вставить заголовок Content-Length в Chrome?
Я знаю, что Google не хочет, чтобы вы использовали Content-Length (как указано here), но я работаю с API, для которого требуется аутентификация, когда я отправляю POST. This extension говорит, что он может это сделать, но я чувствую, что то, что я написал, должно работать. Был ли это недавно заблокирован в новой версии Chrome?
Это заголовки Я посылаю:
{
"ReplaceHeaders": true,
"rh-Authentication": "<my auth token>",
"rh-Timestamp": "<timestamp>",
"rh-Content-Length": body.length
}
Это раздел, который заменяет «RH» заголовки с новыми заголовками (все с «rh-», за «rh-» за исключением случаев, что даже имеет смысл):.
chrome.webRequest.onBeforeSendHeaders.addListener(function(data) {
newHeaders = false;
_.find(data.requestHeaders, function(header) {
if ((header.name === "ReplaceHeaders") && (header.value)) {
_.find(data.requestHeaders, function(h) {
if (h.name.substring(0, 3) === "rh-") {
if (newHeaders === false) { newHeaders = []; }
newHeaders.push({
name: h.name.substring(3, h.name.length),
value: h.value
});
}
});
return;
}
});
if (!!newHeaders) {
// Update headers
return {requestHeaders: newHeaders};
}
}, { urls: ["<all_urls>"] }, ["requestHeaders", "blocking"]);
Когда я делаю запрос GET у меня нет «RH-ContentLength» заголовок и она отлично работает (я могу видеть onSendHeaders, onHeadersReceived и т.д.). Все заменяется, и ответ соответствует ожиданиям. Но когда я делаю запрос POST с «rh-Content-Length», я вижу только onSendHeaders и ничего после этого.
My onSendHeaders для GET и POST имеют недавно отформатированные заголовки.
Удивительно, это действительно работает. Даже когда Google не предоставляет доступ для чтения к этим заголовкам, как указано в документации, ** доступ на запись по-прежнему разрешен **. Другими словами: \t \t 'e.requestHeaders.push ({'name': 'Content-Length', 'value': '123'});' работает вместе с другими, такими как 'e.requestHeaders.push ({ name ':' Host ',' value ':' asdfghhjjk '}); ' – Pacerier