我有一个带有嵌入式 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.swf和http://www.viddler.com/player/key)。
我在稳定的 Safari 版本和每晚的 WebKit 中都看到了这一点。它也发生在我的扩展被禁用和隐私浏览模式下。
我尝试通过嵌入来解决它http://youtube.googleapis.com
,希望不会有重定向,我会让播放器通过 http。但它仍然会重定向到 https,并且在所有浏览器中都会这样做。
我上周提交了这张 YouTube API 票,但到目前为止还没有任何回复。