54

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

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

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

4

1 に答える 1

48

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()。method を に設定しGET、呼び出しreq.end()ます。

于 2012-10-12T04:09:14.233 に答える