【问题标题】:Disable HTTP client calls for IBM Bluemix Node-RED server API禁用对 IBM Bluemix Node-RED 服务器 API 的 HTTP 客户端调用
【发布时间】:2017-01-12 12:06:00
【问题描述】:

我正在使用 IBM Bluemix 来生成 Node-RED 流。 Node-RED 代码充当服务器和客户端通过 API 调用 Node-RED。

客户端可以通过 HTTP 和 HTTPS 方法调用 Bluemix Node-RED 服务器 API。我需要禁用传入的 HTTP 调用。

  1. 是否有任何方法可以通过 bluemix.setting 等禁用传入的 HTTP 调用。

  2. 我在 HTTP IN 节点之后使用了函数节点。检查标头以识别请求是 HTTP 还是 HTTPS。如果是 HTTP,则设置响应标头,如下所示。

    msg.res.sendStatus(403).send('HTTP disabled')    
    msg.res.sendStatus(403)    
    msg.res.status(403)
    

我一直在努力

Deprecated call to msg.res.sendStatus
Deprecated call to msg.res.status

我想如何解决这个问题?

【问题讨论】:

  • 您的意思是您正在拨打选项 2 中列出的所有 3 个电话,还是您每个都尝试过?
  • 我一一试了。它正在阻止 HTTP,但问题是一一收到警告消息。

标签: node.js ibm-cloud node-red


【解决方案1】:
  1. 要禁用 admin api,您应该将 httpAdminRoot 设置为 false。或者,您可以使用 adminAuth 来启用管理 api 的访问控制 - http://nodered.org/docs/security

  2. 为了响应HTTP In 节点收到的HTTP 请求,您必须设置消息的适当属性并将其传递给HTTP Response 节点。您不能直接调用 msg.res 的函数 - 根据您收到的日志消息,该函数已被弃用。 HTTP Response 节点的信息选项卡描述了您可以设置的属性,包括:

    • payload 作为响应正文发送
    • statusCode,如果设置,则用作响应状态码(默认:200)

例如,您的Function 节点可以:

msg.statusCode = 403;
msg.payload = "HTTP disabled";
return msg;

然后将该Function 节点连接到HTTP Response 节点。

【讨论】:

  • 目前我遇到了 HTTP 阻塞问题。 adminAuth 工作正常。
  • 我也尝试使用 statusCode。 msg.statusCode = 401;返回 msg.statusCode;但这不是成功。得到错误。如果我们无法访问 msg.res,那么如何将 statusCode 设置为 response ?
  • Node-RED git hub 示例就是这样定义它的。 github.com/node-red/node-red/blob/master/nodes/core/io/…
  • @RuchiraKariyawasam 我已经用一个例子更新了答案。您返回完整的 msg 对象,只是在其上设置了那些附加属性。
  • 谢谢,我只是设置了没有payload的msg.statusCode。现在它对我有用。
猜你喜欢
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多