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

时间:2018-02-08 12:01:30

标签: javascript typescript https xmlhttprequest ssl-certificate

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

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

搜索时我找到了this

httpreq = new ActiveXObject("Msxml2.ServerXMLHTTP.3.0");
httpreq.setOption(2, 13056);

但答案不适用于像微软边缘,chorme这样的现代浏览器......

我还找到了this,它清楚地说setOption()可以用来忽略ssl证书。

我在代码中可以看到的一个区别是我使用:

创建了httpreq
httpreq = new xmlhttprequest();//This is for chorme and Firefox

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

2 个答案:

答案 0 :(得分:0)

坏消息:

无法通过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));
        }
    );
});

我必须这样做才能支持RainMachine's (stupid HTTPS only) self signed certificates

答案 1 :(得分:0)

如果您在基于 Chromium 的浏览器上进行开发,则可以使用标志 --ignore-certificate-errors。始终通过 --user-data-dir 以防止影响您的主要安全配置文件。仅将其用作最后的手段且仅在本地开发期间使用,因为这会完全忽略所有 SSL 错误。 --ignore-certificate-errors 是未记录的标志,可以随时从铬中删除。

Chromium Linux:

chromium-browser --ignore-certificate-errors --user-data-dir=~/chromium_dev_session

Chrome 视窗:

"C:\Program Files\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --user-data-dir="c:/chrome_dev_session"

Chromium XHR test with --ignore-certificate-errors