无法将 "request" 库与 headers 一起使用
Unable to use "request" library with headers
使用 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
属性。相同的结果。
Headers 以冒号开头的是 "pseudo-headers"。您实际上并没有使用 request()
库自己发送它们,因为它们是非法的 http 1.1 header 格式。
您可以在此处阅读有关它们的信息:Purpose of pseudo colon-header fields。
您应该能够删除所有 pseudo-headers 并确保其中的信息在您的请求(url、方法等)中的其他地方正确指定,他们通常已经是。
使用 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
属性。相同的结果。
Headers 以冒号开头的是 "pseudo-headers"。您实际上并没有使用 request()
库自己发送它们,因为它们是非法的 http 1.1 header 格式。
您可以在此处阅读有关它们的信息:Purpose of pseudo colon-header fields。
您应该能够删除所有 pseudo-headers 并确保其中的信息在您的请求(url、方法等)中的其他地方正确指定,他们通常已经是。