我正在开发一个用javascript编写的项目。我可以看到,对于请求,已经创建了XMLHttpRequest对象。
它对“http”请求工作正常但对“https”失败。由于我在开发环境中进行调试,我只想知道如何忽略XmlHttpRequest
个对象中的自签名证书?
搜索时我找到了this,
httpreq = new ActiveXObject("Msxml2.ServerXMLHTTP.3.0");
httpreq.setOption(2, 13056);
但答案不适用于像微软边缘,chorme这样的现代浏览器......
我还找到了this,它清楚地说setOption()可以用来忽略ssl证书。
我在代码中可以看到的一个区别是我使用:
创建了httpreqhttpreq = new xmlhttprequest();//This is for chorme and Firefox
那么有什么办法可以忽略XmlHttpRequest中的自签名证书吗?
答案 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"