【问题标题】:Youtube https embedding causes warning in FirefoxYoutube https 嵌入在 Firefox 中导致警告
【发布时间】:2013-01-27 01:08:06
【问题描述】:

我正在开发一个需要登录并包含嵌入式 Youtube 视频的网站。由于登录,我需要让 SSL 工作,这在很大程度上是。不过,我在 Youtube 嵌入方面遇到了一个意想不到的问题。指向https://www.youtube.com 很容易,但Firefox 仍然抱怨加密页面上有未加密的内容。根据 Firebug 的说法,唯一未加密的负载来自 http://[stuff].youtube.com/videoplayback?[more stuff]。

现在,Youtube 不想要加密其视频流的开销是完全可以理解的,我认为这不会构成实际的安全漏洞。我只需要让浏览器满意。 (当然,我知道可以禁用该警告,但我不能在我的用户机器上这样做。)必须有办法做到这一点,因为https://www.youtube.com 本身不会弹出此错误,即使它也使用 http: 作为视频流。

我没有在其他浏览器中看到过类似的错误,但我还没有仔细看。

如果重要的话,我的开发机器没有有效的 SSL 证书;我刚刚添加了一个例外。

【问题讨论】:

  • 来自 YouTube 帮助:“重要的是要注意,虽然嵌入组件都支持使用 HTTPS 并且不会产生混合内容错误,但我们还不支持通过 HTTPS 的视频流。” support.google.com/youtube/bin/…
  • 是的,我看到了,我认为没有什么可做的,除了 Youtube 本身没有这个问题。我想,只有当未加密的内容与主机页面位于同一站点时,即不嵌入内容时,它才有可能修复。
  • 我想 YouTube 使用完全不同的技术将视频嵌入到 youtube.com 的页面上,这与向公众提供的嵌入选项相比。至少 youtube.com 上的最终嵌入代码(src、flashvars 等,使用 Firebug 进行检查)与您在其他地方看到的完全不同。

标签: html http firefox https youtube


【解决方案1】:

如果您使用 <iframe>,请使用 <embed> 或查看 YouTube API 提供的其他嵌入代码选项。

【讨论】:

    【解决方案2】:

    我有一个 ssl 安全网站,这在 Firefox 中适用于我

    <iframe id="player" src="https://www.youtube.com/embed/XfI....Ctpo?enablejsapi=1&origin=https://yourdomain.com&showinfo=0&iv_load_policy=3&modestbranding=1&theme=light&color=white&rel=0" frameborder="0"></iframe>

    【讨论】:

      【解决方案3】:

      我没有解决方案,但有一个建议:您确定没有有效的 SSL 证书不能与此某事有关吗?你不会这么想,但你永远不会知道。如果你得到了一个,但它仍然不起作用,那么这不是你无论如何都不必做的事情。我经历了为我的家庭服务器获取/安装和配置 SSL 密钥和证书的过程,每一件小事似乎都会对 SSL 的行为/反应方式产生影响。

      另外,您是否尝试过访问它所在的本地网络之外的站点?听起来您与托管站点的服务器(安装了 SSL 的服务器)在同一个网络上,这可能会由于 NAT 遍历而本身产生问题(我相信,但如果我错了,请纠正我 - 我们'都在这里学习)。有时,使用 HTTPS,您在连接到本地网络中的资源时可能会遇到问题,而互联网上的人根本不会遇到任何问题。只是我的两美分。如果我提供了任何不正确的信息,我们深表歉意。对这一切持保留态度,但希望你能找到问题的答案。像这样的事情可能会让人头疼。

      您可能对此也无能为力……因为 Youtube 似乎不通过 HTTPS 提供内容……这是您无法控制的。我知道你不会质疑你得到的错误,只是想要一个解决方法。

      顺便说一句,我认为他们的主页启用了 HTTPS,而不是他们的视频内容...所以这就是嵌入主页不会产生错误的原因。

      编辑:另外,我看到其他人写过使用嵌入而不是 iframe,我也建议这样做。浏览器将 iframe 视为另一个页面,但您得到的错误表明不安全内容实际上与安全内容相结合,所以一切都应该没问题......但你永远不知道。

      【讨论】:

        【解决方案4】:

        尝试使用 Firefox“检查器/网络分析”(shift-ctrl-I)的页面来分析请求的元素。我猜这是您无法控制的一些javascript INSIDE。无论如何,您应该能够使用此工具查明特定的触发器。

        检查将您的浏览器切换到 HTML5 而不是 Flash 来播放视频是否会有所不同,反之亦然。 YouTube 最近将默认协议更改为 HTML5。

        【讨论】:

          【解决方案5】:

          您的网站设计是否可以尝试通过 http 调用而不是 https 来获取 youtube 视频?我不知道你网站的布局,但如果你只是想让它停止抱怨,那应该这样做。

          也就是说,youtube 确实有有效的 https 证书,但这是由于 google 集成。由于您不是谷歌,因此在访问 youtube 的内容时,您不会被视为有效的证书持有者(这正是 SSL 旨在防止的事情)。

          所以,基本上,如果可以的话,只需通过 http 而不是 https 嵌入。您的网站仍然可以是 https,只是不能调用 youtube。

          【讨论】:

            【解决方案6】:

            请删除http然后你检查..

            例如

            <iframe id="player" src="www.youtube.com/embed/XfI....Ctpo?enablejsapi=1&origin=https://yourdomain.com&showinfo=0&iv_load_policy=3&modestbranding=1&theme=light&color=white&rel=0" frameborder="0"></iframe>
            

            【讨论】:

              【解决方案7】:

              只需用冒号删除( http 或 https ),它将完美运行

              例子

              &lt;iframe id="player" src="//www.youtube.com/embed/XfI....Ctpo?enablejsapi=1&amp;origin=https://yourdomain.com&amp;showinfo=0&amp;iv_load_policy=3&amp;modestbranding=1&amp;theme=light&amp;color=white&amp;rel=0" frameborder="0"&gt;&lt;/iframe&gt;

              【讨论】:

              • AlienWebguy 几年前就给出了这个答案。那时它对我不起作用,而且……想想看,YouTube 并没有坐以待毙;它实际上可能现在可以工作了。好久没试过了。
              • 这会将 iframe 请求方案与用于加载页面的方案相匹配。如果 YouTube iframe 通过 http 显式加载任何内容,您仍然会遇到混合内容问题。
              【解决方案8】:

              执行此操作的更简单的方法是下载视频本身,然后在您的服务器上本地链接到它,例如将其保存在与您的页面相同的目录中,然后直接链接到那里。

              【讨论】:

              • 如果我们只讨论一两个特定的视频,这会起作用,但对于我的特定应用程序来说完全不切实际。我很确定它还引入了简单的嵌入裙子的版权问题。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-01-21
              • 1970-01-01
              • 2013-05-22
              • 1970-01-01
              • 2012-10-24
              • 1970-01-01
              相关资源
              最近更新 更多