我正在尝试编写一个NodeJS应用程序,该应用程序将使用https包中的请求方法与OpenShift REST API进行通信。这是代码:
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
我从服务器得到了正确的答复。
代码中有什么问题吗?
答案 0 :(得分:46)
比较标题卷曲和节点发送的内容,我发现添加:
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()
。