自分のLAN上でアクセス可能な組み込みデバイス用に開発中です。私は私の開発環境が含まれているDockerコンテナの内部からそのAPIへのリクエストを作成したいと考えています。DockerコンテナからLAN IPへのHTTPSリクエストは失敗しますが、カールはうまくいきます。
デバイスはhttps://172.16.1.92
で公開されています(もちろん、適切なHTTPS証明書はありません)。私は正常に私のブラウザでこのURLを訪問することができ、すべてが正常に動作します。
私が実行している場合は、この:
docker run -it --rm node:5 curl --insecure https://172.16.1.92/api
私が期待される結果(JSONオブジェクト)を参照してください。
はしかし、迅速なJSのテストスクリプト書いた後:
var https = require('https');
https.request({
host: '172.16.1.92',
method: 'GET',
path: '/api',
timeout: 5 * 1000,
rejectUnauthorized: false, // for the lack of certificate
}, function(res) {
console.log(res.statusCode);
});
そして、それを実行している:
docker run -it --rm -v `pwd`:/code -w /code node:5 node test.js
を私は数秒後にこのエラーが出る:
events.js:141
throw er; // Unhandled 'error' event
^
Error: socket hang up
at createHangUpError (_http_client.js:206:15)
at TLSSocket.socketOnEnd (_http_client.js:298:23)
at emitNone (events.js:72:20)
at TLSSocket.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:905:12)
at nextTickCallbackWith2Args (node.js:474:9)
at process._tickCallback (node.js:388:17)
私は混乱 - curlを使用してURLの細かい部分にアクセスできますが、ノードのhttps
ライブラリを使用していないのはなぜですか?私は私のホスト上でnmap -sP 172.16.1.*
を実行する場合
は、私はこの行を参照してください。
Nmap scan report for WRN_002258.lan (172.16.1.92)
Host is up (0.0011s latency).
MAC Address: xx:xx:xx:xx:xx:xx (vendor)
をしかし、私はドッカーコンテナ内nmap
をインストールして、同じコマンドを実行した場合、私はこの代わりに、以下を参照してください。
Nmap scan report for 172.16.1.92
Host is up (0.0032s latency).
それは重要ですか?
うわー、それは本当に私のことわざだった。私は常にrequest()がリクエストを作成することを忘れています。辛抱強く答えてくれてありがとう! –