5

我有这个代码:

function newXMLHttpRequest() {
    var xmlHttp;
    try {
        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (f) {
            xmlHttp = new XMLHttpRequest();
        }
    }
    return xmlHttp;
}
var xmlHttp = newXMLHttpRequest();
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = function() {
    // this I have xmlHttp.status = 12019        
    alert("readyState = " + xmlHttp.readyState + "\nstatus = " + xmlHttp.status);
}
xmlHttp.send('same data');

当我使用无效证书向服务器发送请求时,出现状态码 12019 错误。

解决方案应该是跨浏览器(IE、FF、Chrome)

4

1 回答 1

1

首先,要回答标题中的问题,这是做不到的。客户端 xmlHttp 库不允许客户端忽略 ssl 错误。该MsXml2.ServerXMLHTTP 对象确实允许使用该setOption(2, 13056) 方法忽略 SSL 错误。但是,这个对象不能在浏览器中使用,也不是跨平台的。

话虽如此,似乎还有另一个问题。12019 状态并不表示证书无效。在这种情况下,可能会出现HTTP 403 状态代码的某些变体,或许多“无效认证”代码之一。

您的12019 状态码表示:

ERROR_INTERNET_INCORRECT_HANDLE_STATE

12019

无法执行请求的操作,因为提供的句柄状态不正确。

不幸的是,这个状态码并没有真正传达太多信息,而且在不知道 IE 的版本以及有关服务器的详细信息的情况下,没有更多的事情要做。我检查了一些论坛帖子。一个说切换到 IIS 解决了这个问题,另一个说不能被覆盖的临时文件导致了这个问题。然而,大多数帖子都没有令人满意或决定性的结论。

于 2014-08-13T11:37:38.723 回答