相关疑难解决方法(0)

AJAX调用不受信任(自签名)的HTTPS无声地失败

我想对使用自签名证书的安全服务器进行AJAX调用.在我的应用程序使用的环境中,这很好 - 我可以向用户提供CA证书,并让他们在使用应用程序之前安装它.但是,有时,用户会在安装证书之前尝试访问该应用程序.在这些情况下,应用程序默默地失败 - 至少在Firefox(问题的最常见情况)中,看起来调用无声地死亡,甚至没有触发错误处理程序.FWIW,如果用户访问服务器上的实际页面,则会收到证书警告.

我可以破解一个解决方法 - 例如,发出一个心跳/ ping请求并设置一个看门狗定时器来查看服务器是否及时响应 - 但这看起来好吧,哈希.我希望能够提前测试连接.确保要与之交谈的服务器具有来自Javascript的可信证书的"正确"方法是什么?如果它有任何区别,我正在通过JQuery做我的AJAX请求.

更新:这里有一个很棒的妙语.事实证明,AJAX根本不是问题.我确信它基于与自签名证书相关的症状,但缺乏AJAX错误令人不安,尤其是.鉴于以下答案中链接的规范.另一个团队成员钉了它:AJAX错误处理程序没有启动,因为JQuery从未加载过!我们在我们网站的另一个子域中包含了JQuery,也是在HTTPS上托管的 - 用户为ourService.example.com添加了例外,但没有为js.example.com添加例外.显然,如果您将<script>标记指向不受信任的安全连接,那么它也会无声地失败.

{/ headdesk}

ajax ssl jquery ssl-certificate

22
推荐指数
1
解决办法
3万
查看次数

如何在AJAX请求具有无效证书的服务器时抑制SSL错误

我有这个代码:

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');
Run Code Online (Sandbox Code Playgroud)

当我向服务器发送无效证书的请求时,我的错误状态代码为12019.

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

javascript ajax ssl firefox internet-explorer

5
推荐指数
1
解决办法
5516
查看次数