Запрос 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
Я получаю правильный ответ от сервера.
Что-то не так в коде?
Ответы
Ответ 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()
для вас.