我在网址中使用“https”查看了一个页面,该网页还包含用于播放来自youtube的视频的YouTube网址。由于youtube网址包含'http'而没有's',IE会给出一个警告对话框“此页面包含安全和非安全项目。”
有没有办法可以在Javascript中解决这个问题?也许在页面加载后生成具有函数的youtube播放器HTML?该网址仍然必须以“http://”
开头编辑:感谢大家到目前为止的输入!我知道这听起来不可能。如果有一些条件评论或其他什么我会很高兴,我可以告诉IE压制此对话框。它使我们的客户感到困惑,因为世界上大部分地区都在IE中,FF有更好的行为,因为它告诉你是否点击了破锁,而不是烦人的popoup。这就像是“你的程序执行了非法操作”的新版本。 (用户隐藏警察)我正在将youtube视频嵌入到src来自youtube的页面上。我正在使用他们的播放器,因为它是由他们托管的。我看不出这个。
我想我的修复方法是只将HTTPS应用于非常敏感的页面(密码更改,登录),并在其他所有页面中使用HTTPS,因此youtube视频不会提供此弹出窗口。我是PHP的,我担心如果我这样做,SESSION会被破坏,但我想这是唯一的方法,并且将等待星期一解决这个问题。
答案 0 :(得分:6)
我解决此问题的一件事是在我的SSL站点上创建一个代理第三方资源的页面。这样客户端只能看到SSL URL。
例如,您的Flash播放器可以指向网址“https://YourSite.com/proxy.aspx?URL=http://www.youtube.com/video.swf”。当调用“proxy.aspx”时,它会在查询字符串中对URL发出新的Web请求,并将数据返回给客户端。
如果您这样做,则需要验证代理的URL或使用某种ID,以便无法更改URL,因为您说服浏览器确认此内容是可信的。
答案 1 :(得分:4)
我使用以下方法在所有浏览器上解决了这个问题:
1)使用快照上的“播放图像”标签创建视频开头的缩略图图像,并将图像托管在您自己的https服务器上。将缩略图嵌入到您想要视频的位置。
2)当用户点击图片时,调用Javascript onclick处理程序,使用http嵌入的youtube视频的href创建一个新窗口。
function onImgClickHandler() {
//Link to embedded Viddler or Youtube video
var win = window.open("http://www.viddler.com/player/###/", "My Video",
'height=500,width=800,resizable=yes,scrollbars=yes');
win.focus();
}
3)视频现在将显示在主页面的弹出窗口中。
我通常使用视频作为我网站的教程,因此在弹出式浏览器窗口中显示视频效果很好,因为它可以与主要内容一起查看,并让用户跟随网站。浏览器甚至没有提供重定向警告,即您正在从https站点调用http弹出窗口,因此您的用户不会在任何浏览器上看到任何“可怕的”非安全项警告。
希望这会有所帮助,我在我的网站的目标网页上有上述示例:https://drchrono.com/
更新:我通过截取播放视频的截图来预览图像。
答案 2 :(得分:4)
根据this quite recent YouTube API blog post,嵌入式YouTube视频已支持通过HTTPS进行访问。如果是这种情况,(我没有测试它,但同样我没有理由不相信它们),那么你应该只能将“s”粘贴到你的嵌入URL中,它就能正常工作。
答案 3 :(得分:3)
如果有办法绕过它将是IE中的安全漏洞而微软会修补它,所以我认为你不会侥幸逃脱混合内容而没有警告。
唯一的选择是自己托管FLV。有很多很好的基于SWF的FLV播放器。
答案 4 :(得分:2)
在安全网页上拥有不安全的链接是一个几乎没有解决方法的问题。一种选择是在用户通过https连接时排除页面上的特定内容。这样,非安全页面加载将显示内容,安全页面加载将不显示内容:
<% if (!Request.IsSecureConnection){ %>
<div>You can't see this if the page is secure<div>
<%} %>
我使用这种方法取得了很大的成功......希望这会有所帮助。
答案 5 :(得分:1)
Apache httpd服务器的 mod_rewrite 模块可用于在SSL安全页面上嵌入YouTube视频,而不会出现任何错误,详见Adam Mershon's blog。
它涉及设置重写规则以将SSL域中的路径重定向到非SSL YouTube:
RewriteEngine on
RewriteBase /
RewriteRule ^youtube/(.*)$ http://www.youtube.com/$1 [L]
因此,在您的HTML中,您可以嵌入看似来自您自己域名的YouTube链接网址,例如:
<embed src="https://www.yourdomain.com/youtube/v/mydjFYoD4WS&hl=en_US&fs=1&rel=0&autoplay=1&"
type="application/x-shockwave-flash"
allowscriptaccess="always"
allowfullscreen="true"
width="560"
height="340">
</embed>
答案 6 :(得分:1)
我遇到了同样的问题并找到了解决方案。
无需转换SSL认证即可运行。
Step by step guide to fix Google chrome
您可以查看下面列出的固定页面。它有链接到YouTube,Flickr和许多其他网站。这是安全的,已经有几个月了。希望它也能帮到你。
答案 7 :(得分:0)
使用Javascript替换URL无效。 IE7截获内容,然后截取警告。
我尝试使用(jQuery)$(function(){}); sortof 有效。您可以单击对话框中的是/否,但内容仍会加载。
答案 8 :(得分:0)
这是我世界的一个严重问题。它赢得了用户的评论,例如“它不是用户友好的”,“它已经坏了”或“它杀死了我的小猫”。
代理解决方案可能是唯一可以推出的伪修复方案。只是它显然不是一个完美的解决方案。
我尝试通过在https上尽可能多地运行我的网站来更好地导航这一点。显然,youtube案例并不是固定的。
IE,这是一个愚蠢的FUD推动憎恶软件的大块头。我希望IE9看起来真的好多了。只是,不支持XP意味着,它有点像它从未发布过。作为最愚蠢的用户,将无意中写保护现状,直到2247的XP驱动的Chineese天网终于为我们提供红色药丸......答案 9 :(得分:-4)
您的问题发生后,使用Https抓取主页面,同时使用http获取一个或多个包含的文件(图像,javascript,css等)。修复http网址为https。