【问题标题】:YouTube embed request changed only for Safari –> chromeless player inoperable仅针对 Safari 更改了 YouTube 嵌入请求 –> 无铬播放器无法运行
【发布时间】:2013-07-15 22:11:03
【问题描述】:

我有一个带有嵌入式 YouTube Flash (AS3) 播放器的网站,但它不再在 Safari 中运行。

查看this fiddle,其代码仅为:

<object type="application/x-shockwave-flash"
              data="http://www.youtube.com/apiplayer">
</object>

在 Chrome、Firefox 和 IE 中,对http://www.youtube.com/apiplayer 的请求正常返回 (200)。在 Safari 中,服务器向https://youtube.googleapis.com/apiplayer 返回一个 303。

该播放器已加载,但我无法在 JavaScript 中与之交互。我认为这是因为它是通过 https 提供的——尽管我明确地请求 http——导致了混合模式的安全问题。这是我在尝试对播放器执行任何操作时看到的错误(这是完整的无铬播放器嵌入代码):

>>> player.playVideo()
Error: Error calling method on NPObject.

如果我将 Safari 的用户代理更改为其他内容,或者只是修改了“Safari”这个词,那么就会加载正确的播放器。我也可以轻松加载 Vimeo 和 Viddler 播放器(http://vimeo.com/moogaloop.swfhttp://www.viddler.com/player/key)。

我在稳定的 Safari 版本和每晚的 WebKit 中都看到了这一点。它也发生在我的扩展被禁用和处于隐私浏览模式时。

我尝试通过嵌入 http://youtube.googleapis.com 来解决这个问题,希望不会有重定向,我会通过 http 获取播放器。但它仍然会重定向到 https,并且在所有浏览器中都会这样做。

我上周提交了this YouTube API ticket,但到目前为止没有任何回复。

【问题讨论】:

  • 我不认为这会在 YouTube 方面引起太多关注......毕竟这不是一个错误,而是一个设计选择(就像你有一个特定的用例一样阻止您使用 https 或切换到 iFrame API,Youtube 有特定原因不想通过不安全的连接提供播放器)。也许您可能会在您的终端设置一个小的本地代理,它可以通过 https 接收内容,然后通过 http 将它们提供给您的应用程序?
  • 谢谢,这很好。我认为这可能是故意的,但我还没有看到任何证实这一点的东西。为什么只有 Safari?为什么它没有记录在任何地方?代理的想法很聪明;我认为在我的情况下,我会先使用其他解决方法之一,但它可能会起作用。
  • iFrame 是我发现获得可靠的跨浏览器 Youtube 嵌入的最佳方式。 iFrame 方法会给您带来什么问题?
  • 我遇到了同样的问题,我需要让无铬播放器工作。 iFrame 不适合我,因为我需要一个绝对无品牌的播放器,这只能通过无铬合金来实现。 iFrame 将始终在视频末尾显示标题和播放按钮,无论指定的参数如何……我尝试在 Safari 中使用不同的用户代理,一切正常。对此有一些见解会很好。您可以在以下位置查看示例:link

标签: safari youtube webkit youtube-api youtube-javascript-api


【解决方案1】:

Safari 和 YouTube 似乎存在播放问题。 MacRumours http://forums.macrumors.com/showthread.php?t=1098606 提出了多种解决方案,例如切换到 32 位浏览器、使用非 HTML5 版本等。 一个似乎有效的方法如下:

选择 Safari > 首选项 > 隐私 > 详细信息

搜索 Youtube

删除名为 youtube-nocookie.com 的 cookie,然后点击完成。

重新启动 Safari 并重试。

【讨论】:

  • 感谢您的帮助。我尝试了那里列出的建议,但不幸的是没有一个奏效。我没有设置那个 cookie,但是清除所有 youtube 和 googleapis 数据没有任何区别。
【解决方案2】:

YT API 错误报告has been answered,并且有一个解决方法:将版本附加到 URL:

<object type="application/x-shockwave-flash"
        data="http://www.youtube.com/apiplayer?version=3">
</object>

显然,当没有指定版本时,它们只能退回到 Safari 的 AS2 播放器。我不知道为什么这会强制切换到 https,但无论如何,这行得通。

【讨论】:

  • 还是这样吗?我可以看到你正在使用 safari 9 的内置 html5 播放器
猜你喜欢
  • 2011-05-05
  • 2010-12-09
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 2015-11-09
  • 2011-09-06
  • 2011-09-29
  • 1970-01-01
相关资源
最近更新 更多