2

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

看看这个 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,并且在所有浏览器中都会这样做。

我上周提交了这张 YouTube API 票,但到目前为止还没有任何回复。

4

2 回答 2

1

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

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

搜索优酷

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

重新启动 Safari 并重试。

于 2013-08-05T16:11:10.107 回答
1

YT API 错误报告已得到答复,并且有一个解决方法:将版本附加到 URL:

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

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

于 2013-11-06T22:25:45.730 回答