背景
前端的同学反馈,我们公司的离线客户端(使用electron封装的桌面应用),在一些学校的电脑上无法访问我们的服务端接口。百度、腾讯等网站却可以正常访问,唯独我们自己的服务器不可以访问。使用终端工具,也可以Ping通我们的服务器,使用chrome浏览器却不可以访问。
问题描述
接口报错如图所示:
可以看到浏览器的控制台输出错误信息:net::ERR_insecure_response。
解决办法
将学校电脑的本地时间与网络时间进行同步。
原因
原来学校的电脑使用的系统是重启还原系统。每次重启后,电脑的系统会进行还原,并且系统将本地时间设置为2013年。然而我们服务端的SSL证书的有效期为2017年~2019年,客户端与服务器端建立HTTPS服务时,发现证书无效。因而,客户端报 ERR_insecure_response
错误。因此,只需要将本地时间与网络时间进行同步,即可正常服务端接口。
其他问题
为什么可以访问百度、腾讯等大型公司的网站呢?
这些大型公司的SSL证书的有效期很长,且刚好包括了2013年。因此,可以正常访问。
为什么可以Ping通域名,但是无法通过客户端访问服务端域名呢?
ping 使用的是ICMP协议(互联网控制消息协议),它发送icmp回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。
然而,客户端访问服务端使用的是 HTTPS 协议。客户端与服务端在建立可信的链接时,由于证书问题,导致建立链接失败。因而,不可以访问。
ping example.com 与 ping http://example.com 的区别
当我们使用ping example.com
时,我们发现可以正常收到相应。然而,使用 ping http://example.com
这个命令是,发现ping不能正常工作。
原因是,当我们ping以一个域名时,DNS服务会对域名进行解析,然后返回IP地址。然后,DNS服务并能对 http://example.com
这种域名进行解析,无法返回IP。因而,ping http://example.com
不能工作。