Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 由于SSL证书无效,Ajax请求失败?_Jquery_Ajax - Fatal编程技术网

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

Jquery 由于SSL证书无效,Ajax请求失败?,jquery,ajax,Jquery,Ajax,我玩jQuery是为了加强我的前端技能,我遇到了一个错误,我希望是由SSL证书问题引起的 我访问了我试图使用的API的原始url,它在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 c

我玩jQuery是为了加强我的前端技能,我遇到了一个错误,我希望是由SSL证书问题引起的

我访问了我试图使用的API的原始url,它在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.
以下是我使用的基本代码设置(从中提取):


$(文档).ready(函数(){
$.ajax({
url:“https:theAPI”,
cache:false,
成功:函数(html){
$(“.results”).append(html);
}
});
});

我是否应该进一步调查我的设置,或者SSL证书是否存在会阻碍我的有效问题?

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

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


您必须向浏览器添加证书例外才能使其正常工作

如需打开此地址=1390422014472“>https://wcc-dev-api.dyndns.info/pubtimeslots/?categoryid=20&=1390422014472
在您的chrome浏览器中,单击“无论如何继续”。它将向chrome浏览器添加异常


当您向服务器外部发出json请求时,您必须执行JSONP以使其工作

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

第二,即使您解决了SSL问题,也可能会遇到跨域请求问题。也就是说,除非您使用JSONP或目标服务器正确配置了CORS策略(考虑到自签名证书,我猜情况并非如此),否则不能使用AJAX进行跨域调用


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

的确如此。我现在得到的“否”访问控制允许源”标题是p“重新提交请求的资源。”我所有的研究似乎都表明这是服务器端的问题。将数据设置为jsonp也会返回一个解析错误。@TehRuby不幸的是,要使用jsonp,服务器必须配合并理解jsonp请求的发出,以便在函数包装器中返回结果。如果如果无法控制目标服务器,您可能需要在后端进行服务器到服务器调用,并通过自己的AJAX端点公开该结果。因此,底线是,除非您知道另一个域上的服务器支持跨域AJAX调用(通过CORS或JSONP),您不应该采用这种方法。可以通过在响应头上声明接受CORS来绕过CORS,但我还没有解决第一部分,即让AJAX接受自签名证书
<body>
    <div class="results"></div>
    <script>
        $( document ).ready(function() {
            $.ajax({
                url: "https:theAPI",
                cache: false,
                success: function(html){
                    $(".results").append(html);
                }
            });
        });
    </script>
</body>