我有一个嵌入了 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 中,服务器返回 303 到 https://youtube.googleapis.com/apiplayer .
此播放器已加载,但我无法在 JavaScript 中与其交互。我认为这是因为它是通过 https 提供的 - 尽管我明确请求 http - 导致混合模式安全问题。这是我在尝试对播放器执行任何操作时看到的错误(这是完整的 chromeless 播放器嵌入代码):
>>> 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 nightly 中都看到了这一点。当我禁用扩展程序并处于隐私浏览模式时也会发生这种情况。
我尝试通过嵌入 http://youtube.googleapis.com
来解决这个问题,希望不会有重定向,并且我可以通过 http 获取播放器。但它仍然重定向到 https,并且在所有浏览器中都会这样做。
我提交了this YouTube API ticket上周,但到目前为止还没有回复。
最佳答案
Safari 和 YouTube 似乎存在播放问题。 MacRumours http://forums.macrumors.com/showthread.php?t=1098606 中建议了多种解决方案,比如切换到32位浏览器、使用非HTML5版本等。 看起来可行的一个如下:
Select Safari > Preference > Privacy > Details
Search for Youtube
Delete the cookie called youtube-nocookie.com then click Done.
Restart Safari and try again.
关于safari - YouTube 嵌入请求仅针对 Safari 进行了更改 –> chromeless 播放器无法操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17698403/