我正在try 编写一个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

我从服务器得到了正确的响应.

代码中有什么错误吗?

推荐答案

比较curl和node发送的消息,我发现添加:

headers: {
    accept: '*/*'
}

options把它修好了.


To see which headers curl sends, you can use the -v argument.
curl -vIX GET https://openshift.redhat.com/broker/rest/api

在 node 中,req.end()console.log(req._headers).


Quick tip: You can use 100, instead of 101. It will set method to 102, and calls 103 for you.

Node.js相关问答推荐

NodeJS缓冲区大小逻辑:为什么默认是8KB,而不仅仅是数据大小?

如果非SQL函数在事务内部运行失败,PG-Promise事务会回滚吗?

如何使用Nextjs路由从下一步/导航在新选项卡中通过";router.ush";打开链接

为什么 Cors 在 NodeJS 中不起作用

dayjs的isSameOrAfter方法未按预期工作

如何修复我的 NodeJS SSE 写入函数以在后续调用中更新 HTML?

Amplify 部署的应用程序出现TypeError: handler is not a function错误,但它在本地运行

Indexeddb 获取所有不同于特定值的记录

错误:0308010C:try 通过 Github 推送部署到 firebase 托管时出现数字

登录用户并获取他们的个人资料

在 nodejs 中使用 multer 上传文件返回未定义的 req.file 和空的 req.body

为什么我的 npm 脚本中的 glob 不起作用?

Nodejs mongoose 在一个查询中从多个集合中获取结果

Mongodb聚合传递一个匹配的数组和一个不匹配的数组

您如何写入 aws lambda 实例的文件系统?

webpack css-loader 在外部样式表的 url() 引用中找不到图像

将 Heroku App 连接到 Atlas MongoDB 云服务

node.js 服务器和 HTTP/2 (2.0) 与 express.js

expressjs app.VERB 调用中的 next() 和 next('route') 有什么区别?

AWS Lambda 函数写入 S3