Подтвердить что ты не робот

Запрос HTTPS в NodeJS

Я пытаюсь написать приложение NodeJS, которое будет разговаривать с OpenShift REST API, используя метод запроса в пакете https. Вот код:

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

Я получаю правильный ответ от сервера.

Что-то не так в коде?

4b9b3361

Ответ 1

Сравнив то, что отправили заголовки и node, я обнаружил, что добавление:

headers: {
    accept: '*/*'
}

to options исправлено.


Чтобы узнать, какие отскакивающие заголовки отправляются, вы можете использовать аргумент -v.
curl -vIX GET https://openshift.redhat.com/broker/rest/api

В node, просто console.log(req._headers) после req.end().


Быстрый совет: вы можете использовать https.get() вместо https.request(). Он установит метод GET и вызовет req.end() для вас.