【问题标题】:HTTP and HTTPS version of a same page render differently同一页面的 HTTP 和 HTTPS 版本呈现方式不同
【发布时间】:2017-01-24 00:51:52
【问题描述】:

以下是相关页面的链接:

https 版本的页面不会呈现嵌入在文章顶部的视频。我检查了源代码,发现 HTTPs 缺少整个代码块,如下图所示:

我想知道这是怎么发生的? http(s) 不只是与服务器通信的协议吗?为什么我使用不同的协议会得到不同的代码?

【问题讨论】:

  • 你是作为页面的消费者而不是作为生产者来问这个的,对吧?大概页面的创建者可以为不同的协议输出他们想要的任何内容。
  • mixed content 在 https 版本上会有问题
  • 监听这些请求的任何东西不仅可以针对不同的协议返回不同的内容,而且没有任何内容表明它们必须有丝毫关联。

标签: javascript http https rendering


【解决方案1】:

来自 Chrome 开发者工具包:

https://www.eyeviewdigital.com/blog/eyeview-launches-addressable-tv-ads-with-cablevision-dish-programmatic-tv-w-clypd-and-wideorbit/”处的页面通过 HTTPS 加载,但请求了不安全的脚本“http://pshared.5min.com/Scripts/PlayerSeed.js?sid=281&width=480&height=401&playList=519141523”。此请求已被阻止;内容必须通过 HTTPS 提供。

您通常需要以 http 或 https 加载您的内容。将它们混合在一起会导致上述错误。

252行替换

http://pshared.5min.com/Scripts/PlayerSeed.js?sid=281&width=480&height=401&playList=519141523

https://delivery.vidible.tv/aol?sid=281&width=480&height=401&playList=519141523.js

长话短说,内容从未加载,因此页面看起来不同。

【讨论】:

  • 谢谢,杰里米。我之前看到很多混合内容页面,不安全的内容仍然可以正确加载,只是网址栏上的绿色锁变灰了(Chrome)。知道为什么在某些情况下无法加载不安全的脚本吗?你说的“请求被阻止”是指被浏览器阻止,还是被服务器阻止?
  • 此页面描述了为什么会发生这种情况:support.google.com/chrome/answer/…
【解决方案2】:

你说得对,基于 http/https 应该没有区别,因为它只是传输层。服务器的代码中必须有一些东西正在生成 html,它的行为基于用于发出请求的 url 而不同。我建议您提供有关 Web 服务器代码的信息,以帮助分析问题。

【讨论】:

    【解决方案3】:

    这很可能是因为您从不安全的来源加载元素。例如,谷歌浏览器,当你的页面通过 https 加载时,通过 http 加载图像可能会导致图像根本无法加载。当然,这都是出于安全目的。只需检查所有代码并确保所有源都可以通过安全 https 访问,以便它们正确加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-12
      • 2013-06-06
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      相关资源
      最近更新 更多