无法在HTTP上使用Chrome加载响应数据

时间:2018-01-05 07:39:02

标签: javascript google-chrome networking https

我在使用Chrome启动WebApp时遇到了一些麻烦(并非总是如此)。

我的webApp是一个简单的Javascript应用程序,它使用HTTP加载。提供WebApp资源的服务器使用的是Chrome不信任的自签名证书(Firefox也是如此)。

当用户第一次使用像https://mywebapp:8443/ui这样的网址启动WebApp(或清理Chrome浏览器缓存后)时,用户会收到一条消息称该网站不受信任(ERR_CERT_AUTHORITY_INVALID)但是用户可以继续(它是预期的行为)。

接下来出现问题:Chrome开始加载我的webApp,方法是获取index.html,然后获取.css,但它无法获取包含我的webApp的Javascript代码的.js。

在Chrome开发工具中,我可以看到HTTPs请求对获取.js文件的响应是"无法加载响应数据"。

我不明白为什么Chrome出现此错误(Firefox不会发生这种情况)。 接下来,如果我在Chrome中重新加载页面,则会成功加载并显示WebApp。

当我清理Chrome中的缓存时,我可以重现此问题。如果我没有清除缓存,即使Chrome重新启动,WebApp也会继续工作。

是否可以归功于自签名证书?第一次启动时这个问题的原因是什么?为什么只在Chrome上发生?

感谢您的帮助,

2 个答案:

答案 0 :(得分:1)

我想这是因为使用自签名证书,最新的Chrome浏览器不允许信任自签名证书,因此您自己的证书不受Chrome的信任! 您可以将chrome:// net-internals / #hsts in brower address null,然后删除HSTS列表中的'localhost'。

答案 1 :(得分:1)

我错了,问题也出现在Firefox中。

我找到了根本原因,这是由于后端在Web浏览器中运行的WebApp与位于Kong后面的tomcat服务器之间使用了Kong群集。

重要的是,我也在DC / OS环境中工作,在WebApp和Kong之间有一个马拉松-LB!

好的,问题是marathon-LB正在将来自WebBrowser的请求发送到集群中的一个Kong。每个Kong都有自己的自签名证书,因此,Web浏览器会从使用不同证书签名的同一IP @获得响应(因为每个请求都由不同的Kong管理)。

当我只用一个实例配置Kong集群时,一切都运行良好,因为它总是与响应的Kong一样,并且所有请求都使用相同的证书签名。

解决方案是使用证书配置marathon-LB,然后只将此转发到WebBrowser而不是Kong证书。