【发布时间】:2020-09-17 05:02:05
【问题描述】:
使用 Chrome 开发工具,我可以看到所有的请求。我想使用脚本复制其中一个。该请求是可复制的,因为从开发工具重播它是可行的。我正在使用此代码:
let request = require("request");
request.put("<hidden>", {
"headers": {
":authority": "<hidden>",
":method": "PUT",
":path": "/api/<hidden>",
":scheme": "https",
"accept": "*/*",
"accept-encoding": "gzip, deflate, br",
"accept-language": "en-US",
"authorization": "<hidden>",
"content-length": "0",
// and more
}
}, (err, response, body) => {
console.log(err);
console.log(response.statusCode);
console.log(body);
});
控制台说:
TypeError [ERR_INVALID_HTTP_TOKEN]: Header name must be a valid HTTP token [":authority"]
at ClientRequest.setHeader (_http_outgoing.js:487:3)
at new ClientRequest (_http_client.js:221:14)
at Object.request (https.js:309:10)
at Object.request (C:\Users\Admin\AppData\Roaming\npm\node_modules\puppeteer-core\node_modules\agent-base\patch-core.js:25:22)
at Request.start (C:\Users\Admin\AppData\Roaming\npm\node_modules\request\request.js:751:32)
at Request.end (C:\Users\Admin\AppData\Roaming\npm\node_modules\request\request.js:1505:10)
at end (C:\Users\Admin\AppData\Roaming\npm\node_modules\request\request.js:564:14)
at Immediate._onImmediate (C:\Users\Admin\AppData\Roaming\npm\node_modules\request\request.js:578:7)
at processImmediate (internal/timers.js:439:21) {
code: 'ERR_INVALID_HTTP_TOKEN'
}
我尝试不使用.put(),或指定method 和body 属性。结果相同。
【问题讨论】:
-
那个库是deprecated。但是为什么做你有带有
:前缀的标题? -
这就是它们在 devtools 中的显示方式。同样没有
:,请求似乎失败了 -
但是那些“标头”似乎只是重复了请求的 URI 和方法。实际上,对于所有
<hidden>,我们无能为力,没有 minimal reproducible example 可以复制。 -
// and more。没有它们就行不通,所以我想和它们一起尝试 -
还有什么?到那时,无论如何您都已经脱离了无效的冒号前缀标头,因此尚不清楚它们是否相关。
标签: node.js request http-headers google-chrome-devtools request-headers