...此内容也应通过 HTTPS 加载

Posted

技术标签:

【中文标题】...此内容也应通过 HTTPS 加载【英文标题】:... this content should also be loaded over HTTPS 【发布时间】:2014-04-07 11:05:36 【问题描述】:

美好的一天。

网站https://mult-privet.com/

在我的 Chrome 控制台中,我看到了这个错误:

[blocked] The page at 'https://yandex.st/share/ya-share-cnt.html?url=
https%3A%2F%2Fmult-privet.com%2F&services=yaru,
vkontakte,facebook,twitter,odnoklassniki,moimir' 
was loaded over HTTPS, but ran insecure content 
from 'http://connect.odnoklassniki.ru/dk?st.cmd=extOneClickLike&uid=odklocs0&
ref=https%3A%2F%2Fmult-privet.com%2F': 
this content should also be loaded over HTTPS.

为什么还要通过 HTTPS 加载此 URI?

为什么我会收到此错误,如何删除它?

【问题讨论】:

【参考方案1】:

在 Chrome 地址栏的右侧,点击盾牌图标,然后点击“加载不安全的脚本”。完成!

【讨论】:

虽然这不是一个安全的做法,但这就是如何让 chrome 做这样的事情。 这是一种快速、简单的解决方法,但它不能解决问题的根源。这是迄今为止最简单和最容易的答案,但我不建议用户/生产使用它。【参考方案2】:

为什么还应该通过 HTTPS 加载此内容?

因为:

如果您将不安全的内容注入到原本安全的页面中,则可能会拦截、替换不安全的内容,从而使安全内容变得不安全 浏览器无法诚实地继续告诉用户页面是安全的,而部分页面不安全

请告诉我为什么会出现此错误

您正在将不带 SSL 内容的 HTTP 加载到带 SSL 的 HTTP 页面中。

以及如何删除它?

对页面上的所有内容使用 HTTPS。

【讨论】:

这种变化是什么时候发生的?它曾经发出警告,而不是绝对拒绝加载内容。 如果必须加载http内容的场景,假设我们在html页面中有大量文件.txt文件,将所有内容放在https和wget上并不能解决任何目的,它可以创建一个DOS @anish — 这不是 90 年代。 CPU 不再是 SSL 使用的严重限制。 如果您通过 HTTP 部署服务器,则为页面上的所有内容加载 HTTPS 可能会失败。如果您想通过 HTTP 部署服务器,则必须将所有 HTTPS 协议恢复为 HTTP。或者,您可以尝试我在上面发布的建议,它为部署提供了更大的灵活性。【参考方案3】:

为什么会出现此错误

昆汀的回答很好地解释了这一点。我要澄清一下,您收到的是mixed content error。

如何解决此错误

虽然 Quentin 的回答提供了最理想的解决方案,但有时使用相对协议 URL 解决混合内容错误更方便,其中从 URL 中删除了 http[s]?: 前缀。例如,改变这个:

http://connect.odnoklassniki.ru/dk?st.cmd=extOneClickLike&uid=odklocs0&
ref=https%3A%2F%2Fmult-privet.com%2F

到这里:

//connect.odnoklassniki.ru/dk?st.cmd=extOneClickLike&uid=odklocs0&
ref=https%3A%2F%2Fmult-privet.com%2F

通过删除 http: 前缀。它将让浏览器确定协议。在上例中使用协议相对 URL 时,如果您在 SSL 加密页面上,浏览器将访问https://connect.odnoklassniki... URL,而在非 SSL 页面上,它将访问http://connect.odnoklassniki... URL,假设这两种协议都适用于该 URL。

但是,some pitfalls 使用相对协议的 URL,例如确保 URL 后面的服务器能够同时服务于 httphttps 协议。 This SO post 解决了使用相对协议 URL 的更多理由。

【讨论】:

以上是关于...此内容也应通过 HTTPS 加载的主要内容,如果未能解决你的问题,请参考以下文章

研发:http协议,什么是混合内容

IE9 无法通过 SSL 加载 CSS [关闭]

通过 HTTP 加载 HTTPS 资产

解决浏览器报 Mixed Content

此网页正试图从未经验证的来源加载脚本,怎么解决?

如何在 Chrome 中强制加载动态、不安全的内容?