NodeJS中的HTTPS请求

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

我从服务器获取到了正确的响应。

代码有什么问题吗?

1个回答

48

比较curl和node发送的标头,我发现添加以下内容:

headers: {
    accept: '*/*'
}

使用options修复了它。


要查看curl发送哪些标头,可以使用-v参数。
curl -vIX GET https://openshift.redhat.com/broker/rest/api

在node中,在req.end()之后,只需使用console.log(req._headers)


小提示:您可以使用https.get()而不是https.request()。 它会将方法设置为GET,并为您调用req.end()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接