使用NodeJS获取Https请求时出错

时间:2016-12-15 03:26:01

标签: node.js

我正在尝试从教程中学习NodeJS示例文件,因为我是NodeJS的新手,但我无法让它工作。当我在代码下面运行时出现错误:

var https = require("https");
var fs =    require("fs");

var options = {
    hostname: "en.wikipedia.org",
    port: 443,
    path: "/wiki/George_Washington",
    method: "GET",
}

var req = https.request(options, function(res){ });

req.on('error', function(e) {
    console.log(`here comes the error ${e}`);
});

我收到以下错误:

 here comes the error:
 Error:101057795:error:140770FC:SSLroutines:SSL23_GET_SERVunknownprotocol:openssl\ssl\s23_clnt.c:794:

我无能为力,感谢您的帮助和见解:)

更新:必须修改代码才能通过代理服务器。我发布了解决方案和调查结果。

2 个答案:

答案 0 :(得分:1)

我解决了这个问题。以下是问题的摘要和对我有用的解决方案。

我在另一个网络中运行此代码并且运行正常。所以我意识到问题是我正在运行公司Web代理背后的代码,我需要修改我的代码以通过代理系统,而不是直接连接到目标Web服务器。我尝试安装https-proxy-agent模块,但无法安装。再次,因为我在代理系统后面。有一个名为.npmrc文件的npm配置设置文件,可以在C:/ users / [YOUR_USER]下找到。我在下面的配置中添加了.npmrc,以便能够按照建议的Here安装新软件包。

proxy = http://172.26.128.35:3128/
https_proxy = http://172.26.128.35:3128/
strict-ssl = false
ca = null
registry = http://registry.npmjs.org/

最后我修改了我的代码,如下所示,让它通过代理系统和瞧〜,它就像一个魅力。如果您遇到此问题,我希望这会有所帮助。

var https = require("https");
var fs =    require("fs");
var HttpsProxyAgent = require('https-proxy-agent');
var proxy = 'http://172.26.128.35:3128';
var agent = new HttpsProxyAgent(proxy);

var options = {
    hostname: "en.wikipedia.org",
    port: 443,
    path: "/wiki/George_Washington",
    method: "GET",
    agent: agent
}

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.log(`here comes the error ${e}`);
});

答案 1 :(得分:0)

您是否尝试过此代码?

var https = require("https");
var fs =    require("fs");

var options = {
    hostname: "en.wikipedia.org",
    port: 443,
    path: "/wiki/George_Washington",
    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.log(`here comes the error ${e}`);
});

对我来说很好!