Запрос на встраивание YouTube изменен только для Safari - ›не работает Chromeless Player

У меня есть сайт со встроенным проигрывателем YouTube Flash (AS3), и он больше не работает в Safari.

Ознакомьтесь с этой скрипкой, код для которой просто:

<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 - что приводит к проблеме безопасности смешанного режима. Вот ошибка, которую я вижу при попытке сделать что-либо с проигрывателем (это с полным кодом встраивания проигрывателя без хрома):

>>> 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, и это происходит во всех браузерах.

На прошлой неделе я подал этот билет API YouTube, но есть пока нет ответа.


person Jamie Niemasik    schedule 17.07.2013    source источник
comment
Я не думаю, что это что-то, что привлечет много внимания со стороны YouTube ... в конце концов, это не ошибка, а выбор дизайна (точно так же, как у вас есть конкретный вариант использования, который не позволяет вам использовать https или переключаться на API iFrame, у Youtube есть определенные причины не доставлять проигрыватель через небезопасное соединение). Возможно, вы могли бы настроить небольшой локальный прокси на своей стороне, который мог бы получать данные по https, но затем делать их доступными для вашего приложения через http?   -  person jlmcdonald    schedule 01.08.2013
comment
Спасибо, это отличный момент. Я думаю, что это могло быть преднамеренно, но я не видел ничего, чтобы это подтвердить. А почему только Сафари? Почему это нигде не задокументировано? Прокси-идея остроумна; Я думаю, что в моем случае я бы сначала пошел с одним из других обходных путей, но, вероятно, это сработает.   -  person Jamie Niemasik    schedule 01.08.2013
comment
iFrame - лучший способ получить надежные кроссбраузерные встраивания Youtube. Какие проблемы возникнут при использовании iFrame?   -  person Adam Simpson    schedule 07.08.2013
comment
Я столкнулся с той же проблемой, и мне нужно, чтобы хромированный плеер работал. IFrame не подходит для меня, так как мне нужен абсолютно безымянный плеер, чего можно добиться только с хромированным. iFrame всегда будет отображать заголовок и кнопку воспроизведения в конце видео, независимо от указанных параметров ... Я пробовал использовать другой пользовательский агент в Safari, и все работает хорошо. Было бы неплохо узнать об этом. Вы можете проверить пример по ссылке: ссылка   -  person Charleshaa    schedule 09.08.2013


Ответы (2)


Похоже, есть проблема с воспроизведением в Safari и YouTube. На сайте MacRumours http://forums.macrumors.com/showthread.php?t=1098606, например, переключиться на 32-разрядный браузер, использовать версию, отличную от HTML5, и т. д. Один из подходящих вариантов ниже:

Выберите Safari> Настройки> Конфиденциальность> Детали.

Искать на Youtube

Удалите файл cookie с именем youtube-nocookie.com и нажмите Готово.

Перезапустите Safari и попробуйте еще раз.

person Bikas    schedule 05.08.2013
comment
Спасибо за помощь. Я попробовал перечисленные там предложения, но, к сожалению, ни один из них не сработал. У меня не было этого файла cookie, но очистка всех данных youtube и googleapis не имела никакого значения. - person Jamie Niemasik; 06.08.2013

На отчет об ошибке YT API был дан ответ, и здесь - обходной путь: добавление версии к URL-адресу:

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

Видимо, когда версия не указана, они возвращаются к проигрывателю AS2 только для Safari. Я не уверен, почему это заставило бы переключиться на https, но, тем не менее, это работает.

person Jamie Niemasik    schedule 06.11.2013
comment
так ли это до сих пор? Я вижу, что yt использует встроенный html5-плеер Safari 9 - person Anthony Kong; 21.04.2016