我谈到了其他一些问题,但我找不到正确的答案。我写了下面的代码然后我得到它下面的错误。我觉得它与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)
答案 0 :(得分:0)
是的,您可能需要SSL证书才能在端口443(https)上提供服务,以便从安全域发出https请求。
首先,从Let’s Encrypt获取免费证书。按照他们的文档进行操作。我个人使用certbot,但您需要在服务器上拥有shell访问权限。
然后使用先前获得的.crt或.pem和.key文件设置https服务器。查看these个答案。
希望这有帮助。