Chrome 现在阻止从 https 到 http 的所有 jsonp 请求?

Posted

技术标签:

【中文标题】Chrome 现在阻止从 https 到 http 的所有 jsonp 请求?【英文标题】:Chrome now blocking all jsonp requests from https to http? 【发布时间】:2012-08-26 07:44:29 【问题描述】:

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

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

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

我之前唯一提到过这个问题是当页面是从 Google 自己的域之一提供时(我猜是 Google Apps 的安全功能?),这是现在在所有域上启用的东西吗?最新版本的 Chrome?

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

好点,当然这一切都源于浏览器阻止跨域的 ajax xml 调用,这将更加安全,因为没有机会注入 javascript,至少他们开始修复 /that/ 问题使用 html5 安全点很好,但是当您使用不提供 CORS 或 HTTPS 的 3rd 方服务时会发生什么? @Stefano:没有办法保证安全。希望该区块能说服更多的第 3 方服务提供其 API 的 HTTPS 版本。 @bobince 我同意,作为一个懒惰的开发人员,我只是希望有一些大的确认对话框来平滑过渡;但我完全理解大多数人只是点击而不知道发生了什么……这确实会在一半的情况下破坏服务! @bobince 您提到了键盘记录器和其他问题。在这方面使用 https 资源有什么帮助?你仍然可以做你刚才提到的所有事情,只是通过安全通道完成。我的意思是,如果你包含一个 https 脚本,例如 jQuery,你怎么能确定 jQuery 没有记录你的笔画,并传递信息?如果安全是一个问题,那么所有第三方脚本都应该在所谓的“安全”站点上被禁止。我不确定 https 是否有资格。可能不允许第三方脚本添加...

以上是关于Chrome 现在阻止从 https 到 http 的所有 jsonp 请求?的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 现在阻止从 https 到 http 的所有 jsonp 请求?

Chrome 现在阻止从 https 到 http 的所有 jsonp 请求?

Chrome 现在阻止从 https 到 http 的所有 jsonp 请求?

在 HTTPS 页面上创建 websocket 对象时,如何阻止 chrome 将 websocket 从 WS 升级到 WSS

Ajax 调用在 HTTPS 上被阻止 - Chrome 扩展

如何阻止 Chrome 重定向到 HTTPS?