RS http inノード¶
概要¶
HTTPエンドポイントを作成し、Webサービスを構成します。
標準のhttp inノードの機能に加えて、このRS http inノードは、フロー実行に先立ってアクセスの認可を行うことが可能です。
http inノード(Node-RED版)で発生するバグについて
RS http inノードは、こちらに詳細が記載されている「http inノードの受信先が変わるバグ」を回避するために作成されたロボシュタイン専用のhttp inノードになります。
2025/01に追加されたノードです。このノードが環境にない場合、こちらを参考にインストールしてください。
モジュール名 |
---|
node-red-contrib-rs-httpin |
設定項目¶
項目名 | 説明 |
---|---|
メソッド | HTTPメソッドを選択します。 |
URL | エンドポイントURLを構成するパスを入力します。設定済のURLは入力できません。 |
このノードIDをURLにセットする | ボタンを押下するとURLにノードIDがセットされます。 |
設定済のURL一覧 | 標準のhttp inノードおよびRS http inノードにて設定済のURLを確認することができます。 |
アクセス認可 | アクセス元のIPアドレスやドメイン、特定のヘッダ値、任意のJavaScriptコードによる、アクセスの認可を行うことが可能です。認可されないアクセスは、HTTPステータス403 Forbiddenとして応答(任意のJavaScriptコード実行の場合は応答ステータスや内容も自由に設定)されます。 |
アクセス認可¶
要求ヘッダ値による制限¶
HTTPリクエストヘッダ内の特定のキー値が一致する要求のみアクセスを許可します。一致判定する値は固定の文字列以外に、環境変数の値や、正規表現を利用することも可能です。 テキストエリアにアクセスを許可するアクセス元のIPアドレス(CIDR形式も可能:192.168.10.0/24)またはドメイン名(ワイルドカード指定可能:*.comsq.com)を、1行に1つずつ入力できます。
要求全文を対象とした制限¶
入力された任意のJavaScriptコードによって、リクエスト内容を検査したり、応答するエラーコード(アクセス拒否時)を指定することが可能です。
このコードの記述については、Expressアプリケーションで使用するミドルウェアを参照してください。
node.idやnode.debug("...");といった記述で、IDの参照やログ出力が可能です。lodashオブジェクトを使用することもできます。
JavaScriptコードの例:
var result = false;
// JSON形式のPOSTで、送信されたJSONデータの要素"apikey"はノードのIDと一致している必要があります。
result = (
req.header('content-type')=="application/json" &&
_.isObject(req.body) &&
_.has(req.body, "apikey") &&
req.body.apikey==node.id
);
if(!result){
var err = new Error('Forbidden');
err.statusCode = 403;
return next(err);
}else{
return next();
}
URL重複エラー¶
フローの読み込み等で重複したままデプロイすると、そのノードは停止状態になります。 エラーステータスが表示されているノードのURLを変更し、再度デプロイしてください。