由于SSL证书无效,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 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. 

这是我正在使用的基本代码设置(从这里拉出):

  
$( document ).ready(function() { $.ajax({ url: "https:theAPI", cache: false, success: function(html){ $(".results").append(html); } }); });

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

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

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

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

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

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

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

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

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

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