ECONNREFUSED使用节点请求

时间:2018-06-14 03:11:48

标签: javascript ssl request

我谈到了其他一些问题,但我找不到正确的答案。我写了下面的代码然后我得到它下面的错误。我觉得它与SSL有关,但我不完全确定如何。

var request = require('request');
var jar = request.jar();

const userAgent =
  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0.2 Safari/604.4.7';

request({
  method: 'GET',
  url: 'https://www.somewebsite.com/products.json',
  jar: jar,
  headers: {
    Host: 'www.somewebsite.com',
    'Upgrade-Insecure-Requests': '1',
    Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'User-Agent': userAgent,
    'Accept-Language': 'en-us',
    'Accept-Encoding': 'gzip, deflate',
    Connection: 'keep-alive'
  },
  function(err, res, body) {
    const products = JSON.parse(body);
    console.log(products);
  }
});

它给了我这个错误。我相信它,因为我没有证书,但我不知道如何让这个工作。

events.js:167
      throw er; // Unhandled 'error' event
      ^

Error: connect ECONNREFUSED 68.178.213.61:443
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1161:14)
Emitted 'error' event at:
    at Request.onRequestError (/Users/mcl0vin/Documents/Code/bots/node_modules/request/request.js:877:8)
    at ClientRequest.emit (events.js:182:13)
    at TLSSocket.socketErrorListener (_http_client.js:382:9)
    at TLSSocket.emit (events.js:182:13)
    at emitErrorNT (internal/streams/destroy.js:82:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
    at process._tickCallback (internal/process/next_tick.js:63:19)

1 个答案:

答案 0 :(得分:0)

是的,您可能需要SSL证书才能在端口443(https)上提供服务,以便从安全域发出https请求。

  1. 首先,从Let’s Encrypt获取免费证书。按照他们的文档进行操作。我个人使用certbot,但您需要在服务器上拥有shell访问权限。

  2. 然后使用先前获得的.crt或.pem和.key文件设置https服务器。查看these个答案。

  3. 希望这有帮助。