...此内容也应通过 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 后面的服务器能够同时服务于 http
和 https
协议。 This SO post 解决了使用相对协议 URL 的更多理由。
【讨论】:
以上是关于...此内容也应通过 HTTPS 加载的主要内容,如果未能解决你的问题,请参考以下文章