Предупреждение Internet Explorer при встраивании Youtube на сайт HTTPS?

ИЗМЕНИТЬ 22 марта 2011 г.: этот вопрос больше не актуален, поскольку Youtube теперь предлагает доступ по протоколу HTTPS: http://apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.html


Наше приложение работает по протоколу HTTPS, что редко представляет для нас какие-либо проблемы. Однако когда дело доходит до YouTube, тот факт, что они не предоставляют никакого контента через SSL-соединения, вызывает у нас головную боль при попытке встраивать клипы. В основном из-за известного маленького предупреждающего сообщения Internet Explorer:

«Вы хотите просматривать только то содержимое веб-страницы, которое было доставлено безопасно? Эта страница содержит контент, который не будет доставлен с использованием защищенного HTTPS… и т. Д.»

Я пытался решить эту проблему несколькими способами. Самым многообещающим было использование функции ProxyPass в Apache для сопоставления с YouTube.

Нравится:

ProxyPass: /youtube/ http://www.youtube.com
ProxyPassReverse: /youtube/ http://www.youtube.com

Это избавляет от надоедливого предупреждения. Однако SWF-файл youtube не может начать потоковую передачу. SWF-файл, который мне удалось загрузить в браузер, просто сообщает: «Произошла ошибка, повторите попытку позже».

Возможные решения:

  • Загрузите YouTube FLV: s и обслуживайте их вне собственного домена (gah)
  • Использовать собственный FLV-плеер и транслировать только FLV: s с YouTube через прокси https?

Обновление от 10 марта: я пробовал использовать API Google для Youtube. для ActionScript, чтобы загрузить проигрыватель. Сначала это выглядело многообещающе, и я смог загрузить игрока через свой https: // прокси. Однако загруженный SWF-файл содержит множество явных обращений к различным URL-адресам, отличным от ssl, для создания ссылок аутентификации для потока FLV и для загрузки различных междоменных политик.

Похоже, мы не должны напрямую обращаться к flv-потокам. Из-за этого очень сложно обойти предупреждение Internet Explorer, если не считать извлечения FLV: s с YouTube и их обслуживания из вашего собственного домена.

Существуют решения для загрузки YouTube-файлов FLV: s. Но это не соответствует условиям использования Youtube и не подходит для нас.


person Jon Nylander    schedule 05.03.2010    source источник
comment
Я немного обнадежил, когда моя коллега сообщила мне, что она смотрит клип на YouTube в Google Wave в Internet Explorer через HTTPS! Но потом я понял, что, поскольку вам нужно установить плагин Chrome Frame в IE, чтобы вообще запускать Wave. Так что на самом деле это Chrome, а не Internet Explorer.   -  person Jon Nylander    schedule 08.03.2010
comment
Вы не задумывались о том, чтобы просто перейти на страницу HTTP для загрузки встроенного SWF?   -  person i_am_jorf    schedule 10.03.2010
comment
Открытие новой страницы - не вариант - теряются контекст и фокус с точки зрения пользовательского опыта. Если бы меня интересовало только отсутствие предупреждения IE, мы бы сделали что-то простое, вроде этого, и, действительно, возможно, мы будем вынуждены это сделать. Этот вопрос заключается в том, чтобы попытаться избежать предупреждения без ущерба для пользовательского опыта.   -  person Jon Nylander    schedule 11.03.2010
comment
Мы просто столкнулись с той же проблемой - почувствовать вашу боль!   -  person Brian Armstrong    schedule 09.04.2010
comment
Мы действительно решили эту проблему! Чувствует себя прекрасно!   -  person Jon Nylander    schedule 09.04.2010


Ответы (6)


Вы можете использовать swfobject, что на самом деле все, что делает youtubin.

http://code.google.com/p/swfobject/

person Andrew    schedule 28.07.2010
comment
Верно. На самом деле это лучший ответ, чем мой собственный. Спасибо за разъяснения. - person Jon Nylander; 25.08.2010

Итак, наконец-то я нашел решение. А на самом деле это просто и восхитительно.

Используя комбинацию замечательного плагина jQuery YouTubin, который позволяет включать видео с YouTube через swfobject. Некоторая магия в swfobject.js просто решает эту проблему за нас.

Итак, если вы включили jquery, swfobject и jquery.youtubin вы сможете это сделать:

$.youtubin();

И все якорные ссылки, содержащие ссылки на YouTube-клипы, будут заменены встроенными плеерами YouTube.

В конце концов, решение исходит от замечательного проекта swfobject. Как-то они это просто исправляют.

Вот доказательство :): http://screencast.com/t/YzVlZjkx

person Jon Nylander    schedule 09.04.2010
comment
У меня это не сработало. IE 8 просто показал текстовую ссылку, куда нужно было встроить видео. Я также получил предупреждение о безопасности в Chrome. - person Adam; 04.02.2011
comment
IE8 просто показывает текстовую ссылку, похоже, вы либо ошибочно реализовали $ youtubin, либо в нем есть ошибка. Ответ по-прежнему лежит в swfobject, и ужасное всплывающее окно с предупреждением IE8 не появится. Другие менее очевидные предупреждения допустимы, я думаю, мы на самом деле получаем небезопасные данные, поэтому у пользователя должен быть способ узнать об этом. Я хотел избавиться от всплывающего окна IE8, вот и все. - person Jon Nylander; 07.02.2011

Хорошие новости - стандартные URL-адреса для встраивания Youtube могут иметь префикс https вместо префикса http. В сочетании с swfobject это прекрасно работает.

swfobject.embedSWF ("https://www.youtube.com/v/Zm80UedfaxA&enablejsapi=1&playerapiid=hpatientplayer", "терпеливый игрок", "586", "351", "9.0.0", "custom / expressInstall.swf", null, params, atts);

person Martin van Middelkoop    schedule 14.02.2011

Просто используйте SWFOBJECT ... который решил мою проблему

<script type="text/javascript" src="js/swfobject.js"></script>

<div id="quibskiplayer"></div>

<script type="text/javascript">
// All of the magic handled by SWFObject (http://code.google.com/p/swfobject/)

var videoID = "";  // REPLACE VIDEO IT HERE
var divID = "quibskiplayer";  //PLACE ID OF DIV TO BE REPLACED HERE 
var params = { allowScriptAccess: "always" };
var atts = { id: "myytplayer" };

swfobject.embedSWF("http://www.youtube.com/v/" + videoID + "&enablejsapi=1&playerapiid=player1",  divID, "325", "225", "8", null, null, params, atts);

</script>

И в любом случае вы не хотите, чтобы ваш пользователь узнал идентификатор видео, вы можете просто сделать что-то вроде этого в PHP:

$src = $row['youtube_embedd']; // $src is the entire Embedd code
$regex_pattern = '/youtube\.com\/(v\/|watch\?v=)([\w\-]+)/';
preg_match($regex_pattern,$src,$output);
$videoID = $output[2];

TECHFORGE ONLINE

person Raphael Francis Quisumbing    schedule 17.11.2010

Я знаю, что это старый, но я работал через BS, что Google плохой YouTube Cert и проблемы с воспроизведением IE7.

Вы должны встроить плеер AS3. Я сделал это с помощью swfObject, так как мне нужно было контролировать фильмы и т. Д.

enter code here
var params = {allowScriptAccess:"always",wmode:"transparent"};
var atts1 = {id:"myytplayer1"};
var atts2 = {id:"myytplayer2"};
var atts3 = {id:"myytplayer3"};         
swfobject.embedSWF("https://www.youtube.com/v/xxxxx?version=3&autohide=1&controls=0&enablejsapi=1&fs=1&rel=0&iv_load_policy=3&feature=player_embeded&playerapiid=ytplayer1","video1R", "260", "150", "8", null, null, params, atts1);  
swfobject.embedSWF("https://www.youtube.com/v/xxxxx?version=3&autohide=1&controls=0&enablejsapi=1&fs=1&rel=0&iv_load_policy=3&feature=player_embeded&playerapiid=ytplayer2","video2R", "260", "150", "8", null, null, params, atts2);
swfobject.embedSWF("https://www.youtube.com/v/xxxxx?version=3&autohide=1&controls=0&enablejsapi=1&fs=1&rel=0&iv_load_policy=3&feature=player_embeded&playerapiid=ytplayer3","video3R", "260", "150", "8", null, null, params, atts3);    

function onYouTubePlayerReady(playerId) {
 ytplayer1 = document.getElementById("myytplayer1");
 ytplayer2 = document.getElementById("myytplayer2");
 ytplayer3 = document.getElementById("myytplayer3");
}

function pauseYTVideo(divId){
   if (divId.substr(5,1) == 1) ytplayer1.pauseVideo();
   if (divId.substr(5,1) == 2) ytplayer2.pauseVideo();
   if (divId.substr(5,1) == 3) ytplayer3.pauseVideo();
}
person ZOMAN    schedule 22.03.2011

мы только что столкнулись с проблемой такого рода, когда IE7 выдавал ошибку смешанного мультимедиа с видео YT, встроенными через SSL. По правде говоря, их родной плеер по https вообще не SSL. Если вы посмотрите на ресурсы, используемые страницей при вызове модуля, он вызывает файлы со статического сервера через HTTP. Их сценарии обнаружения для версий Flash и версий JavaScript также вызывают с HTTP-адреса.

IE выдаст ошибку на основе этой информации.

Но есть очень простое решение! Используйте YouTube Chromeless API. Этот проигрыватель не вызывает никаких дополнительных файлов для работы, это чистое готовое к использованию решение по этому вопросу. Это гораздо более надежный проигрыватель, и он дает вам гораздо больший контроль над игроком со стороны внешних элементов.

http://code.google.com/apis/youtube/youtube_player_demo.html

person David J Roach V    schedule 12.09.2011