gpt4 book ai didi

Meteor.http.post 设置小写的 'host' header 。我如何覆盖它?

转载 作者:行者123 更新时间:2023-12-01 01:05:25 25 4
gpt4 key购买 nike

我需要与一个在我执行此代码时崩溃的挑剔的 Web 服务器交谈:

payload = JSON.stringify({
jsonrpc: '2.0',
method: 'sendMessage',
id: 1,
params: {
accountID: 0,
messageText: message,
countDownTime: 0,
interval: 0
}
});
result = Meteor.http.post(api_endpoint, { content: payload });

经过一些调试后,我将范围缩小到主机头。我请求的 tcpdump 显示 meteor 以小写形式发送它:
    0x0000:  4500 00dd f959 4000 4006 162b 0a01 0b58  E....Y@.@..+...X
0x0010: 0a01 0b3d d6a5 1388 ae92 8657 3d7b 996e ...=.......W={.n
0x0020: 8018 01c9 2b66 0000 0101 080a 183e 7f02 ....+f.......>..
0x0030: 34da 9ad8 504f 5354 202f 2048 5454 502f 4...POST./.HTTP/
0x0040: 312e 310d 0a43 6f6e 7465 6e74 2d54 7970 1.1..Content-Typ
0x0050: 653a 2061 7070 6c69 6361 7469 6f6e 2f78 e:.application/x
0x0060: 2d77 7777 2d66 6f72 6d2d 7572 6c65 6e63 -www-form-urlenc
0x0070: 6f64 6564 0d0a 5573 6572 2d41 6765 6e74 oded..User-Agent
0x0080: 3a20 4d65 7465 6f72 0d0a 4163 6365 7074 :.Meteor..Accept
0x0090: 3a20 2a2f 2a0d 0a68 6f73 743a 2031 302e :.*/*..host:.10.
0x00a0: 312e 3131 2e36 313a 3530 3030 0d0a 636f 1.11.61:5000..co
0x00b0: 6e74 656e 742d 6c65 6e67 7468 3a20 3135 ntent-length:.15
0x00c0: 310d 0a43 6f6e 6e65 6374 696f 6e3a 206b 1..Connection:.k
0x00d0: 6565 702d 616c 6976 650d 0a0d 0a eep-alive....

0x0000: 4500 00cb f95a 4000 4006 163c 0a01 0b58 E....Z@.@..<...X
0x0010: 0a01 0b3d d6a5 1388 ae92 8700 3d7b 996e ...=........={.n
0x0020: 8018 01c9 2b54 0000 0101 080a 183e 7f02 ....+T.......>..
0x0030: 34da 9ad9 7b22 6a73 6f6e 7270 6322 3a22 4...{"jsonrpc":"
0x0040: 322e 3022 2c22 6d65 7468 6f64 223a 2273 2.0","method":"s
0x0050: 656e 644d 6573 7361 6765 222c 2269 6422 endMessage","id"
0x0060: 3a31 2c22 7061 7261 6d73 223a 7b22 6163 :1,"params":{"ac
0x0070: 636f 756e 7449 4422 3a30 2c22 6d65 7373 countID":0,"mess
0x0080: 6167 6554 6578 7422 3a22 4974 2077 6173 ageText":"It.was
0x0090: 2061 2064 6172 6b20 616e 6420 7374 6f72 .a.dark.and.stor
0x00a0: 6d79 206e 6967 6874 2e22 2c22 636f 756e my.night.","coun
0x00b0: 7444 6f77 6e54 696d 6522 3a30 2c22 696e tDownTime":0,"in
0x00c0: 7465 7276 616c 223a 307d 7d terval":0}}

并且该服务器显然只检查“主机”(区分大小写),如果找不到,则会抛出断言错误。使用 curl,我已经确认完全相同的请求使用大写的 header 名称成功。可悲的是,在(专有)服务器中修复这种不良行为不是一种选择,所以我必须让meteor 发送它期望的值。

我已经尝试过像这样设置标题:
result = Meteor.http.post(
api_endpoint,
{ headers: { 'Host': instance.host }, content: payload }
);

但主机头仍然以小写形式发送。

如何正确覆盖主机 header ?

使用 meteor 0.6.5.1。

最佳答案

确保在 API 更改时更新代码,meteor 仍处于预览版本中,因此内容不断变化。 Meteor.http现在只是 HTTP .

所以它看起来像meteor 将标题转换为小写(参见 here )。您需要更改一些 meteor 包以使其按您想要的方式工作。

改变你正在寻找的东西,你需要让自己成为一个自定义的 HTTP 包。

1) 从 https://github.com/meteor/meteor/blob/devel/packages/http/ 获取文件

2) 创建一个文件夹,如果你没有,名为packages在您项目的根目录和另一个目录中 HTTP
3) 把你从 1 得到的所有文件加入这个 HTTP目录。

4) 运行 meteor add HTTP覆盖默认值 HTTP和你的一起打包。

5) 修改文件 httpcall_client.js在第 143 行(与版本 Meteor 0.6.5.1 相同)更改将 header 转换为小写的部分,以便按原样使用。

关于Meteor.http.post 设置小写的 'host' header 。我如何覆盖它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19239887/

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