首页 > 解决方案 > Sails.js 中的 HTTPS 请求 - 获取“错误:错误:客户端网络套接字在建立安全 TLS 连接之前断开”

问题描述

我正在尝试在 Sails.js 中发出 HTTPS 请求并收到错误: Error: Client network socket disconnected before secure TLS connection was established.

我想我缺少要发送的 SSL 文件,但我不确定我是否是,我不确定如何从页面获取它们。

我正在尝试使用该request库在 Sails.js 中发出 HTTP 请求。

我在 Firefox 中下载了一个网站的 SSL 证书(只有一个.crt文件)。

我把文件放在 Sails 的assets目录中。

我在其中创建了一个sails config SSL文件,并在其中从目录config/ssl.js中导出了SSL证书文件。assets

我创建了一个控制器,导入 SSL 配置对象并将其放入请求的agentOptions属性中。

注意:我没有sailshttp文件。我需要吗?当我使用sails new <app name>.

SSL证书文件路径:assets/wwwoldhealthgovil.crt

SSL 配置文件,位于config/ssl.js(正确读取,可以console.log在控制器中):

const path = require('path');
const fs = require('fs');

module.exports.ssl = {
    ca: fs.readFileSync(path.resolve(__dirname, '../assets/wwwoldhealthgovil.crt')).toString()
}

控制器,InactiveDoctorsController


const request = require('request');

module.exports = {

  getInactiveDoctors: function(req, res) {

    var options = {
      method: 'GET',
      url: 'https://www.old.health.gov.il/oskimbbriut/rufim/DoctorSearchNew.asp',
      qs: {
        p: '1'
      },
      headers: {
        "Remote-Address": "147.237.72.200:443",
        "Referrer-Policy": "no-referrer-when-downgrade",
        "Host": "www.old.health.gov.il",
        "Connection": "keep-alive",
        "Cache-Control": "max-age=0",
        "Upgrade-Insecure-Requests": "1",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "en-US,en;q=0.9,fi;q=0.8,sv;q=0.7,he;q=0.6,el;q=0.5",
        "Cookie": "wcag-cookie-temp-www.old.health.gov.il=true; ASPSESSIONIDACBTQQTR=NMGEOCKABNLNMJBPKLMKKADD; ASPSESSIONIDACDRQQSR=MIGKLOGBIIGHAGGICMICLJKP; ASPSESSIONIDCADDTSAB=GBNOMJIBBKGDNMKEJBCGCFPH",
      },

      agentOptions: {
        ca: sails.config.ssl.ca,
      }

    };

    request(options, function (error, response, body) {
      if (error) throw new Error(error);

      console.log(body);

    });
  },

};

缺少什么/我做错了什么?

标签: sslhttpsssl-certificatesails.jshttprequest

解决方案


推荐阅读