2012-04-12 296 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指出無法覆蓋的臨時文件導致問題。然而,大多數帖子並沒有令人滿意的或決定性的結論。