如何在 XmlHttpRequest 中忽略自签名证书

Pra*_*eep 8 javascript https xmlhttprequest ssl-certificate typescript

我正在开发一个用 javascript 编写的项目。我可以看到,对于请求,已经创建了 XMLHttpRequest 对象。

它对“http”请求工作正常,但对“https”请求失败。由于我在开发环境中调试它,我只想知道如何忽略XmlHttpRequest对象中的自签名证书?

在搜索时我发现了这个

httpreq = new ActiveXObject("Msxml2.ServerXMLHTTP.3.0");
httpreq.setOption(2, 13056);
Run Code Online (Sandbox Code Playgroud)

但答案不适用于现代浏览器,如 Microsoft edge、chorme...

我也发现了这个,它清楚地表明 setOption() 可用于忽略 ssl 证书。

我在代码中可以看到的一个区别是我使用以下命令创建了 httpreq:

httpreq = new xmlhttprequest();//This is for chorme and Firefox
Run Code Online (Sandbox Code Playgroud)

那么有什么方法可以忽略 XmlHttpRequest 中的自签名证书吗?

Cam*_*eln 3

坏消息:

无法直接使用XmlHttpRequest 来完成此操作。这是合乎逻辑的,因为 SSL 需要在网络上保持安全,因为任何禁用它的能力都会带来重大的安全风险。

您也是对的,这setOption不是 XmlHttpRequest 下的标准/现代方法。

好消息:

可以做的是通过受信任/正确配置的代理来完成此操作,下面的示例作为配置为允许不安全的 SSL 连接的 Node/Express 服务器:

$router.get("/", (oRequest, oResponse) => {
    $nonStrictSSLRequest = require('request').defaults({strictSSL: false});
    
    $nonStrictSSLRequest(
        { url: "https://192.168.1.2:8080/api/apiVer" },
        function (err, oAPIResponse, sBody) {
            oResponse.status(200).json(JSON.parse(sBody));
        }
    );
});
Run Code Online (Sandbox Code Playgroud)

我必须这样做才能支持RainMachine 的(仅愚蠢的 HTTPS)自签名证书