node.js - 删除 NodeJS http2 默认标头/以正确的顺序获取它们
问题描述
我正在尝试执行 http2 请求,并且正在使用 nodejs 中的 http2 库。
var body = {
query: 'query',
variables: null,
operationName: "",
};
const client = http2.connect("https://host", {
createConnection: () =>
tls.connect({
host: "host",
socket: socket,
rejectUnauthorized: false,
ALPNProtocols: ["h2"],
}),
});
const req = client.request({
":method": "POST",
":authority": "host",
":scheme": "https",
":path": "/path/",
});
var headers =
"accept: application/json";
const buffer = new Buffer(JSON.stringify(body));
var payload = Buffer.concat([Buffer.from(headers, "utf8"), buffer]);
req.setEncoding("utf8");
let data = [];
req.on("data", (chunk) => {
data.push(chunk);
});
req.write(payload);
req.end();
req.on("end", () => {
console.log(data.join());
});
});
这是我的测试请求。我用 Charles Proxy 检查了请求,发现它可能失败了,因为目标服务器检查了标头的顺序。在我的标头对象中,它们的顺序正确,但它们以不同的顺序发送。这是与原始请求的唯一区别,它有效。
有什么方法可以 a) 禁用它们并将它们与其余标题一起手动发送,或者 b) 以正确的顺序发送它们?
如果我只是不在头对象中定义它们,它们默认为“:path”:“/”和“:method”:“get”。
解决方案
推荐阅读
- r - 在 R 中计算多变量积分
- mirth - 如何在 Mirth Transformer 脚本中替换 \T\?
- docker - 在 Dockerfile 中使用变量
- javascript - Javascript过滤器,foreach,startsWith在数组上
- angularjs - 使用 Azure AD 身份验证从 AngularJS 调用 API 的 MSAL.js
- python - 使用 df.copy() 时,不会复制 pandas 数据框中包含的 ndarray
- rust - 有没有办法让线程不那么激烈地争夺 I/O 资源?
- java - 集成两个窗口的Java乒乓球游戏
- amazon-web-services - 如何使用本地副本计算使用 KEM 密钥加密的 S3 文件的 ETag?
- javascript - 有没有一种方法可以在单击 c3.js 时更新图形?