2010-03-05 30 views
9

EDIT 22 Tháng Ba 2011: Câu hỏi này không còn có liên quan kể từ Youtube hiện nay cung cấp HTTPS truy cập: http://apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.htmlCảnh báo Internet Explorer khi nhúng Youtube trên trang web HTTPS?


ứng dụng của chúng tôi được điều hành qua HTTPS mà hiếm khi đưa ra bất kỳ vấn đề đối với chúng tôi. Tuy nhiên, khi nói đến youtube, thực tế là họ không trình bày bất kỳ nội dung nào qua kết nối SSL sẽ khiến chúng tôi đau đầu khi cố gắng nhúng các clip. Chủ yếu là vì Internet Explorers nổi tiếng thông điệp cảnh báo nhỏ:?

"Bạn có muốn chỉ xem nội dung trang web đó đã được giao một cách an toàn Trang này chứa nội dung sẽ không được giao sử dụng một HTTPS an toàn .. .vv "

Tôi đã cố giải quyết vấn đề này theo nhiều cách. Điều hứa hẹn nhất là sử dụng chức năng ProxyPass trong Apache để ánh xạ tới YouTube.

Như thế này:

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

này được thoát khỏi những cảnh báo phiền phức. Tuy nhiên, các SWF youtube không bắt đầu streaming SWF tôi quản lý để tải vào trình duyệt chỉ đơn giản nói: "Đã xảy ra lỗi, vui lòng thử lại sau".

giải pháp tiềm năng có lẽ là:

  • Tải youtube FLV: s và phục vụ họ ra khỏi miền riêng (Gah)
  • Sử dụng tùy chỉnh FLV-máy nghe nhạc và dòng chỉ FLV: s từ youtube qua một proxy https ?

Cập nhật 10 tháng 3: Tôi đã cố gắng sử dụng Googles Youtube API for ActionScript để tải trình phát. Nó trông đầy hứa hẹn lúc đầu và tôi có thể tải một trình phát thông qua proxy https: // của tôi. Tuy nhiên, tệp SWF được tải chứa nhiều lần tải cuộc gọi rõ ràng đến các url không phải là ssl khác nhau để tạo liên kết xác thực cho luồng FLV và tải các chính sách crossdomain khác nhau.

Có vẻ như chúng tôi không được phép truy cập trực tiếp vào luồng. Điều này làm cho nó rất khó để bỏ qua cảnh báo Internet Explorer, ngắn của rip ra FLV: s từ youtube và phục vụ chúng ra khỏi tên miền của riêng bạn.

Có các giải pháp ngoài đó để tải xuống các tệp YouTube của bạn FLV: s. Nhưng điều đó không tuân thủ các điều khoản sử dụng của Youtube và thực sự không phải là một lựa chọn cho chúng tôi.

+0

tôi trở thành một chút hy vọng khi một đồng nghiệp mách tôi rằng cô ấy đã được xem một clip youtube trong Google Wave trên Internet Explorer qua HTTPS! Nhưng sau đó tôi nhận ra rằng vì bạn cần cài đặt Plugin Chrome Frame trong IE để chạy Wave. Vì vậy, nó thực sự là Chrome đang chạy chứ không phải Internet Explorer. –

+0

Bạn có cân nhắc điều hướng đến trang HTTP để tải SWF được nhúng không? –

+0

Để mở một trang mới là một lựa chọn không thực sự - ngữ cảnh kinh nghiệm người dùng khôn ngoan và tiêu điểm sẽ bị mất. Nếu tôi chỉ quan tâm đến việc không có cảnh báo IE, chúng tôi sẽ làm một cái gì đó đơn giản như thế này, và thực sự có lẽ chúng tôi sẽ bị buộc phải làm như vậy. Câu hỏi này là tất cả về việc cố gắng tránh cảnh báo mà không ảnh hưởng đến trải nghiệm người dùng. –

Trả lời

5

Bạn có thể sử dụng SWFObject, mà thực sự là tất cả youtubin đang làm.

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

+0

Thật vậy. Đó thực sự là một câu trả lời tốt hơn của tôi. Cảm ơn bạn đã làm rõ. –

7

Ok, vì vậy cuối cùng tôi đã xảy ra khi có giải pháp. Và thực sự nó rất đơn giản và thú vị.

Sử dụng kết hợp tuyệt vời jQuery plugin YouTubin có tùy chọn bao gồm video trên youtube qua số swfobject. Một số phép thuật trong swfobject.js chỉ đơn giản là giải quyết điều này cho chúng ta.

Vì vậy, miễn là bạn bao gồm jquery, swfobjectjquery.youtubin bạn sẽ có thể để làm điều này:

$.youtubin(); 

Và tất cả các liên kết neo chứa liên kết đến youtube-clip sẽ được thay thế với những người chơi youtube nhúng.

Cuối cùng, giải pháp đến từ dự án swfobject tuyệt vời. Bằng cách nào đó, họ chỉ sửa lỗi này.

Đây là bằng chứng :): http://screencast.com/t/YzVlZjkx

+0

Điều này không hiệu quả đối với tôi. IE 8 chỉ cho thấy một liên kết văn bản nơi video nên được nhúng. Tôi cũng nhận được cảnh báo bảo mật trong Chrome. – Adam

+0

IE8 đó chỉ cho thấy một liên kết văn bản có vẻ như bạn đã hoặc thực hiện $ youtubin sai hoặc một lỗi trong đó. Câu trả lời vẫn nằm trong swfobject và popup cảnh báo IE8 khủng khiếp sẽ không xuất hiện. Cảnh báo ít rõ ràng hơn là ok tôi nghĩ, chúng tôi đang trong thực tế lấy dữ liệu không an toàn, vì vậy người dùng nên có một cách để biết điều đó. Tôi muốn loại bỏ cửa sổ bật lên của IE8, đó là tất cả. –

3

Chỉ cần sử dụng SWFObject ... mà giải quyết vấn đề của tôi

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

Và trong bất kỳ trường hợp bạn không muốn người dùng của bạn để tìm ra ID video, bạn có thể chỉ cần làm một cái gì đó như thế này trong 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

Tin tốt - URL nhúng chuẩn của Youtube có thể được cung cấp bằng tiền tố https thay vì tiền tố http. Kết hợp với swfobject, điều này hoạt động tốt.

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

Có. Điều này thật tuyệt. Không cần swfobject thì phải không? –

2

Tôi biết điều này là cũ nhưng tôi đã làm việc thông qua BS đó là Google xấu YouTube Cert và các vấn đề phát lại IE7.

Bạn phải nhúng trình phát AS3. Tôi đã làm nó với SWFObject như tôi neede để kiểm soát những bộ phim 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

chúng tôi chỉ tình cờ gặp một vấn đề có tính chất này với IE7 ném một lỗi truyền thông hỗn hợp với Video YT nhúng qua SSL. Sự thật là, người chơi bản địa của họ trên https không phải là SSL cả. Nếu bạn xem các tài nguyên đang được trang sử dụng khi đơn vị được gọi, nó được gọi là các tệp từ một máy chủ tĩnh qua HTTP. Các kịch bản phát hiện của chúng cho các phiên bản Flash và các phiên bản JavaScript cũng gọi từ một địa chỉ HTTP.

IE sẽ ném một lỗi dựa trên thông tin này.

Nhưng có một sửa chữa rất dễ dàng! Sử dụng API Chromeless của YouTube. Người chơi đó không gọi bất kỳ tệp bổ sung nào để hoạt động, đó là một giải pháp hoàn toàn sẵn sàng để sử dụng cho vấn đề này. Đây là một trình phát đáng tin cậy hơn nhiều và nó mang lại cho bạn khả năng kiểm soát người chơi lớn hơn từ các yếu tố bên ngoài.

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

+0

Cảm ơn! Tuyệt vời với một số thông tin cập nhật về điều này. –

Các vấn đề liên quan