2010-03-05 11 views
9

EDIT 22. März 2011: Diese Frage ist nicht mehr, dass relevant, da Youtube jetzt HTTPS-Zugriff bietet: http://apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.htmlInternet Explorer Warnung beim Einbetten von Youtube auf HTTPS-Site?


Unsere Anwendung ist HTTPS überfahren, die nur sehr selten Probleme für uns präsentiert. Wenn es jedoch um youtube geht, bereitet uns die Tatsache, dass sie keine Inhalte über SSL-Verbindungen präsentieren, Kopfschmerzen, wenn man versucht, Clips einzubetten. Vor allem, weil der Internet-Explorers berühmte kleine Warnung:

„Wollen Sie nur die Webseite Inhalt anzeigen möchten, die eine sichere Verbindung übermittelt wurde Diese Seite enthält Inhalte, die wird nicht über eine sichere HTTPS geliefert werden .. . etc "

Ich habe versucht, dies auf verschiedene Arten zu lösen. Am vielversprechendsten war es, die ProxyPass-Funktionalität in Apache für die Zuordnung zu YouTube zu verwenden.

So:

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

Dies, die lästigen Warnung entledigt. Die SWF-Datei von youtube kann jedoch nicht mit dem Streamen beginnen. Die SWF-Datei, die ich in den Browser geladen habe, besagt lediglich: "Ein Fehler ist aufgetreten, bitte versuchen Sie es später erneut."

Mögliche Lösungen sind vielleicht:

  • Download YouTube FLV: s und ihnen dienen der eigenen Domain aus (GAH)
  • Verwenden Sie benutzerdefinierte FLV-Player und Strom nur FLV: s aus YouTube über einen HTTPS-Proxy ?

-Update 10. März: Ich habe versucht, Googles Youtube API for ActionScript zu verwenden, um einen Spieler zu laden. Es sah zunächst vielversprechend aus und ich konnte einen Player über meinen https: // Proxy laden. Die geladene SWF-Datei enthält jedoch viele explizite Aufrufe an verschiedene URLs ohne SSL, um Authentifizierungslinks für den FLV-Stream zu erstellen und verschiedene crossdomain-Richtlinien zu laden.

Es scheint wirklich so, als ob wir nicht direkt auf FLV-Streams zugreifen sollen. Dies macht es sehr schwierig, die Internet Explorer-Warnung zu umgehen, ohne die FLV: s von youtube zu entfernen und sie aus Ihrer eigenen Domäne zu bedienen.

Es gibt Lösungen zum Herunterladen youtubes FLV: s. Dies entspricht jedoch nicht den Nutzungsbedingungen von Youtube und ist für uns keine Option.

+0

wurde ich ein wenig hoffnungsvoll, wenn ein Kollege mir gekippt, dass sie einen YouTube-Clip in Google Wave im Internet Explorer über HTTPS zuzusah! Aber dann habe ich gemerkt, dass Sie das Chrome Frame Plugin im IE installieren müssen, um Wave überhaupt ausführen zu können. Es läuft also Chrome und nicht der Internet Explorer. –

+0

Möchten Sie nur zu einer HTTP-Seite navigieren, um die eingebettete SWF-Datei zu laden? –

+0

Um eine neue Seite zu öffnen, ist das nicht wirklich eine Option - Benutzererlebnis weise Kontext und Fokus wird verloren gehen. Wenn ich nur daran interessiert wäre, die IE-Warnung nicht zu haben, würden wir etwas einfaches tun, und vielleicht werden wir sogar dazu gezwungen sein. Bei dieser Frage geht es darum, die Warnung zu vermeiden, ohne die Benutzerfreundlichkeit zu beeinträchtigen. –

Antwort

5

können Sie swfobject verwenden, die wirklich alle youtubin ist tut.

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

+0

In der Tat. Das ist eigentlich eine bessere Antwort als meine eigene. Danke fürs klarstellen. –

7

Ok, also endlich habe ich eine Lösung gefunden. Und eigentlich ist es einfach und entzückend.

Mit einer Kombination der wunderbaren jQuery plugin YouTubin, die eine Option hat, Youtube-Videos über swfobject aufzunehmen. Etwas Magie in swfobject.js löst das einfach für uns.

Also, solange Sie jquery, swfobject und jquery.youtubin sind Sie in der Lage sein, dies zu tun:

$.youtubin(); 

Und alle Anker-Links Links zu youtube-Clips enthalten, werden mit eingebetteten YouTube-Player ersetzt.

Am Ende kommt die Lösung aus dem wunderbaren swfobject Projekt. Irgendwie reparieren sie das einfach.

Hier ist der Beweis :): http://screencast.com/t/YzVlZjkx

+0

Das hat bei mir nicht funktioniert. IE 8 zeigte nur einen Textlink, in den das Video eingebettet sein sollte. Ich habe auch eine Sicherheitswarnung in Chrome erhalten. – Adam

+0

Dass IE8 nur eine Textverknüpfung zeigt, scheint so zu sein, als ob Sie $ youtubin entweder falsch oder fehlerhaft implementiert haben. Die Antwort liegt immer noch in swfobject und das schreckliche IE8 Warnung Popup wird nicht angezeigt. Andere weniger offensichtliche Warnungen sind in Ordnung, ich glaube, wir holen unsichere Daten, also sollte der Benutzer das wissen. Ich wollte das IE8 Popup loswerden, das ist alles. –

3

Nur SWFObject verwenden ..., die mein Problem gelöst

<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> 

Und in jedem Fall, dass Sie nicht wollen, Ihre Benutzer die Video-ID, um herauszufinden, können Sie nur so etwas tun in 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

5

Gute Nachrichten - die Standard-URLs von Youtube können mit https-Präfix anstelle von http-Präfix versehen werden. In Kombination mit dem swfobject funktioniert das gut.

swfobject.embedSWF ("& https://www.youtube.com/v/Zm80UedfaxA enablejsapi = 1 & playerapiid = hpatientplayer", "patientplayer", "586", "351", "9.0.0", "custom/expressInstall.swf", null, params, atts);

+0

Ja. Das ist fantastisch. Keine Notwendigkeit für swfobject dann richtig? –

2

Ich weiß, das ist alt, aber ich arbeitete durch die BS, die schlechte Google Cert und IE7 Wiedergabe Probleme ist.

Sie müssen den AS3-Player einbetten. Ich habe es mit SWFObject wie ich neede die Filme zu steuern, et al ..

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(); 
} 
1

wir nur über ein Problem dieser Art kamen mit IE7 einem Medienfehler mit YT Videos eingebettet über SSL zu werfen. Die Wahrheit ist, ihr nativer Player über https ist überhaupt kein SSL. Wenn Sie sich die Ressourcen ansehen, die von der Seite verwendet werden, wenn das Gerät aufgerufen wird, wurden Dateien von einem statischen Server über HTTP aufgerufen. Ihre Erkennungsskripte für Flash-Versionen und JavaScript-Versionen rufen ebenfalls von einer HTTP-Adresse aus auf.

IE wird einen Fehler aufgrund dieser Informationen werfen.

Aber es gibt eine sehr einfache Lösung! Verwende die Chrome-API von YouTube. Dieser Player ruft keine zusätzlichen Dateien zum Betrieb auf, es ist eine reine gebrauchsfertige Lösung für die Angelegenheit. Dies ist ein viel zuverlässigerer Spieler und es gibt Ihnen viel größere Kontrolle über den Spieler von externen Elementen.

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

+0

Danke! Toll mit einigen aktuellen Informationen dazu. –