由于SSL证书无效,Ajax请求失败?

时间:2014-01-22 20:06:11

标签: jquery ajax

我正在使用jQuery来增强我的前端技能并遇到了一个我希望是由SSL证书问题引起的错误。

我去了我试图使用的API的原始网址,它在Chrome中给了我这个警告:

The site's security certificate is not trusted!
You attempted to reach theAPI, but the server presented a certificate issued by an entity that is not trusted by your computer's operating system. This may mean that the server has generated its own security credentials, which Chrome cannot rely on for identity information, or an attacker may be trying to intercept your communications.

以下是我使用的基本代码设置(从here拉出):

<body>
    <div class="results"></div>
    <script>
        $( document ).ready(function() {
            $.ajax({
                url: "https:theAPI",
                cache: false,
                success: function(html){
                    $(".results").append(html);
                }
            });
        });
    </script>
</body>

我是否应该更多地调查我的设置,或者SSL证书是否存在阻碍我的有效问题?

3 个答案:

答案 0 :(得分:1)

你有两个问题。首先,自签名证书永远不会适用于可公开访问的应用程序,因为您需要每个用户以某种方式接受该证书为可信任(正如其他人所说的那样,无法通过AJAX实现)。

其次,即使您遇到SSL问题,您也可能遇到跨域请求问题。也就是说,除非您使用的是JSONP,否则AJAX不能用于进行跨域调用,或者目标服务器已经正确配置了CORS策略(考虑到自签名证书,我认为不是这种情况)。

您最好的选择可能是在您的服务器上公开一个可以通过AJAX调用的后端API,后端然后进行跨域调用并将数据公开以响应AJAX请求。如果有意义的话,你甚至可以在本地缓存远程调用的结果。

答案 1 :(得分:0)

这是您正在使用的自签名证书。建立“信任”没有更高的权力。除非客户端浏览器已经建立了私钥交换,否则它将始终导致此错误注释。通过Web浏览器进行直接连接以及幕后$.ajax()调用都是如此。

自签名证书对测试或私有应用程序很有用,但在投入生产时,您需要一个由证书颁发机构签名的证书。

http://en.wikipedia.org/wiki/Self-signed_certificate

答案 2 :(得分:0)

您必须向浏览器添加证书例外才能使其正常运行。

喜欢打开此地址= 1390422014472“&gt; https://wcc-dev-api.dyndns.info/pubtimeslots/?categoryid = 20&amp; = 1390422014472
在Chrome浏览器中单击“仍然继续”。它会为Chrome浏览器添加一个例外。

您正在向服务器外部发出json请求,您必须执行JSONP才能使其正常工作