web-dev-qa-db-ja.com

NodeJSでのHTTPSリクエスト

Httpsパッケージのrequestメソッドを使用してOpenShift REST APIと通信するNodeJSアプリを作成しようとしています。コードは次のとおりです。

var https = require('https');

var options = {
  Host: 'openshift.redhat.com',
  port: 443,
  path: '/broker/rest/api',
  method: 'GET'
};

var req = https.request(options, function(res) {
  console.log(res.statusCode);
  res.on('data', function(d) {
    process.stdout.write(d);
  });
});
req.end();

req.on('error', function(e) {
  console.error(e);
});

しかし、これは私にエラーを与えています(ステータスコード500が返されます)。コマンドラインでcurlを使用して同じことをしたとき、

curl -k -X GET https://openshift.redhat.com/broker/rest/api

サーバーから正しい応答を取得しています。

コードに何か問題がありますか?

52
ssb

Curlとnodeが送信したヘッダーを比較すると、次の追加が見つかりました。

_headers: {
    accept: '*/*'
}
_

optionsに修正しました。


Curlが送信するヘッダーを確認するには、_-v_引数を使用できます。
_curl -vIX GET https://openshift.redhat.com/broker/rest/api_

ノードでは、console.log(req._headers)の直後にreq.end()があります。


クイックヒント:https.get()の代わりにhttps.request()を使用できます。メソッドをGETに設定し、req.end()を呼び出しますあなた。

46
MiniGod