【问题标题】:Bypassing SSL certificate error in jQuery and AJAX绕过 jQuery 和 AJAX 中的 SSL 证书错误
【发布时间】:2014-11-01 14:57:04
【问题描述】:

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

问题:我的应用程序无法与服务器建立任何连接。以下屏幕截图来自谷歌浏览器中的开发者工具。

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

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

问题:是否有任何解决方法,我可以绕过这个错误吗?为什么我通过 Web 浏览器登录到服务器后它会起作用?我的应用将在同一域中本地使用,它不是公共应用。

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 是解决相同问题的帖子。据我了解this post根据它没有解决方案。任何建议都会有所帮助。谢谢

【问题讨论】:

  • “为什么我通过网络浏览器登录到服务器后它会起作用?” - 你没有“登录到服务器”,你已经告诉你的浏览器它应该忽略服务器提供的证书将来对该地址无效的事实。这“有效”,因为这正是在您的浏览器中添加此类异常的原因应该
  • 另见stackoverflow.com/questions/31058764/… 有更详细的答案。

标签: jquery ajax ssl


【解决方案1】:

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

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

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

【讨论】:

  • 您能否详细说明一下Additionally a certificate is (typically) issued to a domain name not an IP address so you will need to do the same in your Ajax call.
  • 如果您在浏览器中查看证书属性,它可能是颁发给:一个完全限定的域名,这就是您需要在 ajax 调用中使用的名称
  • 我该怎么做?我很迷惑。我必须在 url 中使用我的服务器的 ip,因为它无法解析为名称。 nslookup 不提供服务器名称。为什么我需要在域的 ajax 调用中执行此操作?
  • 证书Issued To:的值是多少?
  • 假设它是 XYZ。实际上也是3个字母。基本上颁发给:具有通用名称和组织等子字段。用 Firefox 试过。
【解决方案2】:

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

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

不是推荐的做法...

【讨论】:

  • 我不认为它适用于此。 withCredentials 是关于传递额外的标头,例如用于身份验证的 cookie。这与服务器的证书无关。
猜你喜欢
  • 2010-12-07
  • 1970-01-01
  • 2017-08-29
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 2014-07-07
  • 2010-11-09
  • 1970-01-01
相关资源
最近更新 更多