跳到主要内容

HTTP 请求-设置请求头

设置 HTTP 请求头信息

问题背景

需要发送带有特定请求头的 HTTP 请求。

解决方案

将 msg.headers 字段设置为您希望包含在发送到 HTTP 请求 节点的消息中的请求头的字段/值对。

示例

在此示例中,我们设置 X-Auth-UserX-Auth-Key 请求头,以调用公共的 HttpBin post 测试服务。

该流程包含四个节点:

  1. 注入 节点: 配置为每当触发时,发送一个空消息,以启动流程。
  2. 函数 节点 (set payload and headers): 此节点是关键,它创建 msg.headers 对象,并设置请求头字段/值。
    msg.payload = "data to post";
    msg.headers = {};
    msg.headers['X-Auth-User'] = 'mike';
    msg.headers['X-Auth-Key'] = 'fred-key';
    return msg;
  3. HTTP 请求 节点 (post to HttpBin): 发送 POST 请求到 https://httpbin.org/post。它会自动使用 msg.headers 中设置的请求头。
  4. 日志输出 节点: 显示 HTTP Request 节点返回的 msg.payload 内容。

http-request-set-headers

示例JSON

[{"id":"cb1dfcde.fd153","type":"function","z":"db204302463e78d0","name":"set payload and headers","func":"msg.payload = \"data to post\";\nmsg.headers = {};\nmsg.headers['X-Auth-User'] = 'mike';\nmsg.headers['X-Auth-Key'] = 'fred-key';\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":620,"wires":[["e44209e7.752698"]]},{"id":"dcf34aab.218928","type":"inject","z":"db204302463e78d0","name":"","repeat":"","crontab":"","once":false,"topic":"","payload":"","payloadType":"date","x":180,"y":620,"wires":[["cb1dfcde.fd153"]]},{"id":"e44209e7.752698","type":"http request","z":"db204302463e78d0","name":"post to HttpBin","method":"POST","ret":"obj","paytoqs":"ignore","url":"https://httpbin.org/post","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":580,"y":620,"wires":[["ee306582.f0dde8"]]},{"id":"ee306582.f0dde8","type":"debug","z":"db204302463e78d0","active":true,"console":"false","complete":"false","x":750,"y":620,"wires":[]}]

运行结果

部署此流程并触发 注入 节点时,HTTP 请求 节点将向 HttpBin 服务发送 POST 请求。由于 HttpBin 服务会将请求回显,您可以在调试面板中展开输出消息,并在 msg.payload.headers 部分看到设置的请求头:

{
"args": { },
"data": "data to post",
"files": { },
"form": { },
"headers": {
"Content-Length": "12",
"Host": "httpbin.org",
"User-Agent": "got (https://github.com/sindresorhus/got)",
"X-Amzn-Trace-Id": "Root=1-68c22a8e-697769f15f71b88f4f5c2e99",
"X-Auth-Key": "fred-key",
"X-Auth-User": "mike"
},
"json": null,
"origin": "183.14.31.248",
"url": "https://httpbin.org/post"
}

下面的 函数 节点中的代码通过添加 msg.headers 对象并在此对象中设置请求头字段/值来添加这些额外的消息字段。

msg.payload = "data to post";
msg.headers = {};
msg.headers['X-Auth-User'] = 'mike';
msg.headers['X-Auth-Key'] = 'fred-key';
return msg;

http-request-set-headers-result