在HTTP站点上嵌入Youtube时出现Internet Explorer警告?

Jon*_*der 9 youtube ssl https internet-explorer flvplayback

编辑2011年3月22日:由于Youtube现在提供HTTPS访问,因此该问题不再具有相关性:http://apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.html


我们的应用程序通过HTTPS运行,很少给我们带来任何问题.然而,当谈到youtube时,他们没有通过SSL连接呈现任何内容这一事实让我们在尝试嵌入剪辑时感到头痛.主要是因为Internet Explorers着名的小警告信息:

"您是否只想查看安全传送的网页内容?此页面包含无法使用安全HTTPS等提供的内容"

我试图通过几种方式解决这个问题.最有希望的是使用Apache中的ProxyPass功能映射到YouTube.

像这样:

ProxyPass: /youtube/ http://www.youtube.com
ProxyPassReverse: /youtube/ http://www.youtube.com
Run Code Online (Sandbox Code Playgroud)

这摆脱了恼人的警告.但是,youtube SWF无法启动流式传输我设法加载到浏览器中的SWF只是声明:"发生错误,请稍后再试".

可能的解决方案可能是

  • 下载youtube FLV:s并从自己的域名中提供服务(gah)
  • 使用自定义FLV播放器,只通过https代理从youtube流式传输FLV:s?

3月10日更新:我尝试使用Googles Youtube API for ActionScript加载播放器.它起初看起来很有希望,我能够通过我的https://代理加载播放器.但是,加载的SWF包含对不同非ssl URL的显式调用的大量内容,以便为FLV流创建身份验证链接以及加载不同的跨域策略.

看起来我们似乎不应该直接访问flv-streams.这使得很难绕过Internet Explorer警告,而不是从youtube中删除FLV:s并将其提供给您自己的域.

有解决方案可以下载你的FLV:s.但这不符合Youtube的使用条款,对我们来说真的不是一个选择.

Jon*_*der 7

好的,最后我发现了一个解决方案.实际上它简单而令人愉快.

使用精彩的jQuery插件YouTubin的组合,它可以选择通过swfobject包含youtube视频.swfobject.js中的一些魔法只是为我们解决了这个问题.

因此,只要包含jquery,swfobjectjquery.youtubin,您就可以执行此操作:

$.youtubin();
Run Code Online (Sandbox Code Playgroud)

包含指向youtube-clips链接的所有锚链接都将被嵌入式youtube播放器取代.

最后,解决方案来自精彩的swfobject项目.不知何故,他们只是修复此问题.

这是证明:):http://screencast.com/t/YzVlZjkx


And*_*rew 5

你可以使用swfobject,这真的是你所做的一切.

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


小智 5

好消息 - Youtube的标准嵌入URL可以提供https前缀而不是http前缀.与swfobject结合使用,效果很好.

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