首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用https的REST适配器

使用https的REST适配器
EN

Stack Overflow用户
提问于 2015-04-29 16:40:32
回答 2查看 312关注 0票数 0

我正在用Express编写一个REST适配器,该适配器将传入的REST调用转换为另一个REST,该API由北行设备公开。因此,从本质上说,客户端设备是向适配器公开的REST发送请求,而适配器将REST请求发送给另一个设备。因此,适配器既是客户端设备的REST服务器,也是向北移动设备的REST客户端。

代码语言:javascript
运行
复制
var express = require('express');
var router = express.Router();
var request = require('request');

router.route('/')
    .get(function(req, res) {           
        request('URL'', function (error, response, body) {

            if (!error && response.statusCode == 200) {
                console.log("Sent to MOS");
                console.log(body) // Print the google web page.
            }
        })
    });

module.exports = router;

我在使用请求模块。我的北行设备正在公开https REST。当我在上面代码的URL部分中插入https (注意's') REST调用时,我无法从向北的设备中得到答案。

如果上面的'URL‘指向https网站(比如https://www.httpsnow.org/ ),它就会运行得很好。此外,当我在POSTMAN中或在同一设备上的浏览器中使用https REST时,我会得到适当的响应。

所以我不明白为什么它会从邮递员那里工作,而不是从我的代码中。从broser开始,我必须首先接受一个证书,所以我想问题是我的代码没有经过身份验证,但是如何构建身份验证呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-29 17:03:53

这是一个小错误-您的服务器打开到HTTPS服务器的连接,服务器的证书似乎无效,握手被拒绝,您得到一个错误而不是响应。

幸运的是,请求本机支持自定义HTTPS证书(即显示为无效的证书将显示为有效)。

为此,您可以使用agentOptions选项。下载您必须在浏览器中接受的证书(他们应该在他们的文档中提供一个证书),并将其保存为ca.cert.pem(或其他一些扩展,取决于它们提供了什么)在与您构建的Node.js应用程序相同的文件夹中。

然后像这样使用它:

代码语言:javascript
运行
复制
var request = require('request');
var fs = require('fs');

request({
    url: 'https://api.some-server.com/',
    agentOptions: {
        ca: fs.readFileSync('ca.cert.pem') //Note: This will load the ca synchronously. Avoid doing this in production.
    }
}, function(error, response, body){
  if(error){
    console.warn(error); //If an error occurred, you'll be informed
    return; //Won't run the rest of the function
  }

  if(response.statusCode === 200){
    //Do whatever you want
  }
});
票数 1
EN

Stack Overflow用户

发布于 2015-04-29 16:50:16

这可能是北向web服务器配置的问题,而不是请求库本身的问题。尝试将用户代理字符串更改为其他内容:

代码语言:javascript
运行
复制
var opts = {
  url: 'URI',
  headers: {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
  }
};

request(opts, function (err, res, body) {
  // Do stuff
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29949701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档