2012-04-12 175 views
5

服务器我有这样的代码:如何抑制SSL错误,当AJAX请求与无效证书

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)

回答

1

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

这就是说,似乎还有另一个问题。 12019状态不表示无效的认证。在这种情况下,预计会出现HTTP 403状态代码的一些变体,或许多'invalid certification'代码之一。

12019 status code表示:

ERROR_INTERNET_INCORRECT_HANDLE_STATE

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

不幸的是,这个状态码并没有真正的通信,也不知道IE的版本和服务器的详细信息。我查了一些论坛帖子。 One stated切换到IIS修复了问题,another指出无法覆盖的临时文件导致问题。然而,大多数帖子并没有令人满意的或决定性的结论。