【问题标题】:How to set http headers for multiple messages in nodered?如何在nodered中为多条消息设置http标头?
【发布时间】:2020-03-18 15:02:59
【问题描述】:

我正在开发一个流程,旨在将大量消息分成更小的消息。我已经实现了划分 msg 的所有逻辑部分,但是,当将所有这些小消息发送到 http 响应节点时,我收到以下错误:

“错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头”。

当然,我在 http 响应节点中指定了标头,但到目前为止没有任何成功。

重要的是要提到我在发送第一条小消息后收到此错误,所以是的,基本上以下消息会触发此错误。

知道如何解决这个错误吗?

到目前为止我尝试过的事情:

  • 在 http 响应中指定标头。

  • 在响应节点之前放一个函数,并在函数本身中指定msg的标头。

【问题讨论】:

  • 不能对HTTP响应节点进行分块编码,一输入一输出
  • 因此...你的意思是我不能在每个输出中设置多个标题?
  • 我是说您只能将 1 条消息发送到响应节点或从请求节点输入的每 1 条消息。您必须同时设置该响应的所有标头。
  • @hardillb 您应该将其添加为答案,以便它可以被接受。

标签: javascript node.js http node-red


【解决方案1】:

您可以添加一个 Catch 节点来捕获来自 HTTP 响应节点的异常错误。除了 Catch 节点,您还可以配置 Switch 节点来过滤掉 HTTP_HEADERS_SENT 消息以调试其他异常错误。

【讨论】:

    【解决方案2】:

    Node-RED HTTP-Response 节点不支持 HTTP Chunked 编码。这意味着整个响应需要保存在单个输入消息的msg.payload 字段中。该消息还需要来自 HTTP-In 节点(它携带返回响应所需的对象)。

    这也意味着 Headers 需要在同一对象的 msg.headers 字段中设置,或者在 HTTP-Response 对象的配置中设置。

    【讨论】:

      猜你喜欢
      • 2011-04-09
      • 2015-07-13
      • 1970-01-01
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 2014-06-27
      • 2011-06-24
      • 1970-01-01
      相关资源
      最近更新 更多