错误\u不安全\u响应在Javascript中处理提示
我们有很多来自web应用程序的ajax调用,问题是所有调用都是https请求(我们的IT团队要求),是的,我们已经打开了允许跨域的标题。但问题是,我们有自己的自定义证书,用于所有应用程序的内部,因此,当我们调用ajax时,基本上会出现错误: 未能加载资源:net::错误\u不安全\u响应 如果我在浏览器中打开URL并接受证书,ajax调用可以正常工作。所以我的问题是,有没有办法通过Javascript处理这个问题?或者添加受信任的证书可以解决此问题吗?而且,即使我们添加了可信证书,我还会在ajax中遇到任何问题吗错误\u不安全\u响应在Javascript中处理提示,javascript,jquery,ajax,ssl,Javascript,Jquery,Ajax,Ssl,我们有很多来自web应用程序的ajax调用,问题是所有调用都是https请求(我们的IT团队要求),是的,我们已经打开了允许跨域的标题。但问题是,我们有自己的自定义证书,用于所有应用程序的内部,因此,当我们调用ajax时,基本上会出现错误: 未能加载资源:net::错误\u不安全\u响应 如果我在浏览器中打开URL并接受证书,ajax调用可以正常工作。所以我的问题是,有没有办法通过Javascript处理这个问题?或者添加受信任的证书可以解决此问题吗?而且,即使我们添加了可信证书,我还会在aja
注意:我们正在chrome浏览器中测试所有这些,如果所有AJAX调用都在同一个域中进行,那么添加可信证书就足够了,如果它们不在同一个域中,那么使用JSONP通过AJAX获取数据,就不会出现错误
如果您想了解JSONP,这里有一个有用的链接:是的,将证书添加到用户的可信证书列表中可以解决您的问题。只要您的服务器正确设置为服务器CORS(根据您接受证书后的成功情况,似乎是这样),证书就是您唯一的问题 HTTPS提供了两个安全优势:
bob.com
交谈时,她知道这实际上是她所知道的服务器,她称之为bob.com
,而不是冒名顶替者)bob.com
时,该站点会为您提供一个公钥以执行安全通信。您对此表示怀疑,并说,“当然,此公钥允许我安全地与您交谈,但我如何知道您真的是bob.com
?”然后服务器会给您一个CA签名的证书,上面写着:
我们,VeriSign证书颁发机构,在我们的调查中被广泛信任,特此证明以下公钥确实属于bob.com
:
公钥:ZGdlZGhydGhyaHJ0eWp5cmo…
可验证签名
VeriSign
许多主要的证书颁发机构(操作系统和浏览器)都广泛信任它们,只要它们可靠地验证了公钥确实属于某个域名,就可以颁发签名证书。因为您的操作系统已经信任这些签名,我们可以不经任何确认就使用它们
当您使用自签名证书时,没有受信任的CA验证您的证书确实属于您的域名。任何人都可以制作一份文件,上面写着:
嘿,伙计,这绝对是bob.com
的公钥:
公钥:WGdoZmpodHlqa2p1aXl1eWk…
相信我们,写这封信的人,好吗?我们肯定这是关键。写这封信的人是运行bob.com
的人。我们保证
签字
写这封信的人
这上面没有可信的签名。用户必须决定是否接受证书证明公钥确实属于bob.com
做出有意义的决定是一个困难的过程——您需要检查证书并在某个地方找到公钥的预先存在的可信记录(或者联系站点管理员或帮助台代表)。实际上,您需要让您对证书的信任来自某个地方,因为它不是来自主要证书颁发机构的受信任签名
允许JavaScript自动确定信任是没有意义的。关键是用户必须确定证书是否可信,然后对系统的证书存储进行适当的修改
假设可以对Ajax请求执行此操作,但这不会很好。您需要向用户显示一个浏览器UI屏幕,询问用户是否希望信任脚本尝试访问的任何域的自签名证书。除了会破坏浏览体验外,这可能会造成危险的混乱:如果我在example.com
,突然(由于我不知道的脚本操作)要求我信任bob.com
的证书,我可能会完全基于对example.com
的信任而接受它
将证书添加到系统的受信任证书列表中,或者让系统已经信任的CA对其进行签名。是否有方法检测原因是不安全响应,以便我可以指示用户在适当的站点信任证书?获取现成的受信任证书对我来说并不总是一个选项,因此我需要在我自己的JS中检测它。@ehdv XHR API不太可能提供一种方法来区分证书错误和其他类型的网络错误。我认为您最好的选择是简单地假设错误是由证书错误引起的,然后继续。(如果站点有不安全的资源,您也可以尝试获取该资源,验证站点是否已启动,并增加问题是HTTPS的信心。)