gpt4 book ai didi

javascript - 我可以将 Content-Length header 注入(inject) Chrome 吗?

转载 作者:行者123 更新时间:2023-11-28 00:23:20 25 4
gpt4 key购买 nike

我正在尝试制作我的第一个 Chrome 扩展程序,这是一次很好的学习经历。我快完成了,但是这最后一 block 让我难受。

我知道 Google 不希望您使用 Content-Length(如所述 here ),但我正在使用一个 API,当我 POST 时,该 API 的身份验证需要它。 This extension说它可以做到,但我觉得我写的应该有效。最近是否在新版本的 Chrome 中屏蔽了此功能?

这些是我发送的 header :

{
"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” header ,但它工作正常(我可以看到 onSendHeaders、onHeadersReceived 等)。一切都已更换,响应符合预期。但是当我使用“rh-Content-Length”发出 POST 请求时,我只看到 onSendHeaders,之后什么也没有。

我的 GET 和 POST 的 onSendHeaders 都有新格式化的 header 。

最佳答案

好的,我是在凌晨 3:00 发布的。经过急需的 sleep 后,我今天早上醒来并与 friend 谈论了这件事。他指出错误实际上是在我的ajax调用中。我修复了这个问题,现在我可以从我的分机发送内容长度。上面的代码确实有效。

我上面发布的代码的一些注释,供以后搜索此内容的人使用:

  • 我正在使用underscore循环遍历数组
  • 这会删除所有其他 header ,并仅添加以“rh-”开头的 header 。您可能想要也可能不想要。
  • 您必须将 ["requestHeaders", "blocking"] 作为 onBeforeSendHeaders.addListener() 中的最后一个参数
  • 在您的manifest.json 权限中,确保您拥有“webRequest”和“webRequestBlocking”

虽然未经测试,但这应该适用于 Chrome 表示不会通过的其他 header 。以下是 Google 表示未在 onBeforeSendHeaders 中提供的 header 列表(如文档 here ):

  • 授权
  • 缓存控制
  • 连接
  • 内容长度
  • 主持人
  • 如果-修改-自
  • 如果不匹配
  • If-范围
  • 部分数据
  • 编译指示
  • 代理授权
  • 代理连接
  • 传输编码

希望这有帮助。

关于javascript - 我可以将 Content-Length header 注入(inject) Chrome 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29789841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com