拦截发送请求以更改请求库的标头

时间:2017-06-06 21:01:04

标签: node.js request multipartform-data

我使用臭名昭着的request library发送请求。 其中一个请求要求我发送标头multipart/mixed; boundary={myboundary}

请求正在使用form-data library来处理此类请求,但它未正确设置Content-Type标头。因此,我需要这样设置:

let req = request.post({url: "https://..."}, formData: formData)
req.setHeader('Content-Type', `multipart/mixed; boundary=${req.form().getBoundary()}`)

遗憾的是,我无法在触发请求后添加/更改任何标头。因此,我想知道是否有办法拦截发送,所以我可以更改标题?

1 个答案:

答案 0 :(得分:1)

您需要使用multipart option代替formData来使用其他任意multipart/*内容类型。 multipart数组中的每个对象都包含要在该部分中发送的标头。唯一的例外是body属性,该属性用作该部分的实际主体。

request.post({
  url: 'https://...',
  multipart: [
    { 'X-Foo-Header': 'bar', body: 'baz' },
    // ...
  ],
  headers: { 'Content-Type': 'multipart/mixed' }
});

应为现有的显式Content-Type标头自动附加边界。 This request test明确测试此行为。