【发布时间】:2016-08-08 03:38:56
【问题描述】:
我正在尝试制作我的第一个 Chrome 扩展程序,这是一次很好的学习体验。我快完成了,但最后一段让我很生气。
我知道 Google 不希望您使用 Content-Length(如 here 所述),但我正在使用一个 API,当我发布时它的身份验证需要它。 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 等)。一切都被替换,响应如预期。但是当我使用“rh-Content-Length”发出 POST 请求时,我只看到 onSendHeaders,之后什么也没有。
我的 GET 和 POST 的 onSendHeaders 都有新格式化的标题。
【问题讨论】:
标签: javascript google-chrome google-chrome-extension