在jQuery和AJAX中绕过SSL证书错误

时间:2014-09-08 11:38:54

标签: jquery ajax ssl

我是jQuery / AJAX的新手。我有一个小应用程序来测试pupose,它上面有一个按钮。单击该按钮时,将连接到位于同一域中的服务器以获取某些数据并发出警报。

问题:我的应用程序无法与服务器建立任何连接。以下屏幕截图来自Google Chrome中的开发人员工具。

eror

服务器有自己的自签名证书。如果我通过Web浏览器连接到服务器,我会收到SSL证书警告,如下所示。

ssl-error

如果我点击继续,然后登录到服务器,此后我的应用程序也能够从服务器中提取数据。(如果我点击我的网络应用程序上的按钮,它会提醒从服务器获取的数据。)

问题:有没有解决方法,我可以绕过此错误吗?一旦我通过网络浏览器登录服务器,为什么它可以正常工作?我的应用将在本地使用,并且不是公共应用。

jQuery代码:我有这段代码:

$('#mybutton').click(function(){
    $.ajax({
        type: "GET",
        url: "https://192.168.150.33/Api/loc?jsonpCallback=myCallback",
        dataType:"jsonp",
        async: false,
        beforeSend: function (request){
            request.withCredentials = true;
            request.setRequestHeader("Authorization", "Basic " + btoa('admin' + ":" + 'password'));
            },
        success: function(response){
                alert('hi');
            },
    });
});
function myCallback(response){
        data= JSON.stringify(response)
        alert(data)

Here是一个解决同一问题的帖子。据我所知,根据它的帖子,没有解决方案。任何建议都会有所帮助。感谢

2 个答案:

答案 0 :(得分:17)

您无法以编程方式绕过浏览器实施的SSL错误/警告行为,如果可能的话,它将完全使该安全层失效。

如果您在本地/在 Windows 域环境中执行此操作,只需将自签名证书添加到trusted store

此外,证书(通常)发布到域名而不是IP地址,因此您需要在Ajax调用中执行相同的操作。

答案 1 :(得分:1)

我可以解决这个问题,将它添加到我的 ajax 调用中:

beforeSend: function (request) {
    request.withCredentials = false;
}

不是推荐的做法...