29

最近,Chrome 已停止显示通过 jsonp 加载的数据并出现错误

[阻止] https://user.example.com/category/12345的页面运行来自http://livedata.example.com/Data.svc/jsonp/GetData?category=12345&callback=_jsp&_1346417951424=的不安全内容。

它在所有其他浏览器上仍然可以正常工作,并且已在运行 Chrome 的几台不同计算机上得到确认。

我之前唯一提到过这个问题是当页面是从谷歌自己的域之一提供时(我猜是谷歌应用程序的安全功能?),这是在最近的版本中现在在所有域上启用的东西铬?

理想情况下,我们不希望在我们的 livedata 子域上启用 https,因为它会导致额外的服务器负载,数据都是公开可用的,因此没有迫切需要对其进行加密。

4

2 回答 2

19

它绝对应该阻止它——它不安全并且违背了 HTTPS 的承诺。

JSONP 资源获取是通过创建<script>指向目标的资源来完成的。这意味着目标服务器可以在包含页面上运行它喜欢的任何 JavaScript,因此任何中间人都可以将任意脚本注入到所谓的受 HTTPS 保护的页面中(例如,添加键盘记录器或完全替换页面内容)。<script>来自 HTTP的 HTTPS 页面并不比普通的 HTTP 页面更安全。

如果您希望 HTTPS 页面能够访问它,您将需要提供数据馈送的 HTTPS 版本。否则浏览器至少应该产生警告。Chrome 现在默认阻止并不会改变问题的性质,它只是为您提供正确修复它所需的额外推动力。

于 2012-09-01T09:11:08.357 回答
7

<script src="//domain.com/script.js"></script>如果远程服务器允许 HTTPS,则解决问题... // 如果站点通过 https 访问,将自动将协议设置为 https。

于 2013-01-09T20:31:42.610 回答