5

我有一个在 URL 中使用“https”保护的页面,该页面还包含用于播放来自 youtube 的视频的 youtube url。由于 youtube URL 包含没有 's' 的“http”,IE 会给出“此页面包含安全和非安全项目”的警告对话框。

有没有办法在Javascript中解决这个问题?也许在页面加载后生成带有函数的 youtube 播放器 HTML?网址仍必须以“http://”开头

编辑:感谢大家到目前为止的投入!我知道这听起来不可能。如果有一些条件注释或其他内容,我会很高兴,这样我就可以告诉 IE 禁止显示此对话框。它让我们的客户感到困惑,因为世界上大部分地区都在 IE 中,FF 的行为要好得多,因为它会告诉您是否单击了损坏的锁,而不是烦人的弹出窗口。这就像一个新版本的“你的程序执行了非法操作”。(用户向警方隐藏)我将 youtube 视频嵌入到 src 来自 youtube 的页面上。我正在使用他们的播放器,因为它是由他们托管的。在我看来,这是没有办法的。

我想我的解决方法是仅将 HTTPS 应用于非常敏感的页面(密码更改、登录)并在所有其他页面中退出,因此 youtube 视频不会出现此弹出窗口。我在 PHP 中,我担心如果我这样做,SESSION 会被破坏,但我想这是唯一的方法,我会等待周一解决这个问题。

4

10 回答 10

6

我为解决这个问题所做的一件事是在我的 SSL 站点上创建一个页面,该页面代理第 3 方资源。这样客户端只能看到 SSL URL。

例如,您的 Flash 播放器可以指向 URL“ https://YourSite.com/proxy.aspx?URL=http://www.youtube.com/video.swf ”。当调用“proxy.aspx”时,它会向查询字符串中的 URL 发出一个新的 Web 请求,并将数据返回给客户端。

如果您这样做,您需要验证代理 URL 或使用某种 ID 以使 URL 无法更改,因为您要让浏览器相信此内容是可信的。

于 2009-02-06T21:15:52.467 回答
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/

更新:我通过拍摄播放视频的屏幕截图来进行图像预览。

于 2009-02-25T23:51:22.383 回答
4

根据最近的 YouTube API 博客文章,嵌入的 YouTube 视频已经支持通过 HTTPS 访问。如果是这种情况,(我还没有测试过,但同样我没有理由不相信他们),那么你应该能够将“s”粘贴到你的嵌入 URL 中,它会工作得很好。

于 2011-03-31T23:18:23.310 回答
3

如果有办法解决它,那将是 IE 中的一个安全漏洞,微软会修补它,所以我认为你不会在没有警告的情况下摆脱混合内容。

唯一的选择是自己托管 FLV。有许多不错的基于 SWF 的 FLV 播放器可用。

于 2009-02-06T20:58:27.760 回答
2

在安全网页上有不安全的链接是一个几乎没有解决方法的问题。一种选择是在用户通过 https 连接时排除页面上的特定内容。这样,非安全页面加载将显示内容,而安全页面加载将不显示内容:

<% if (!Request.IsSecureConnection){ %>
    <div>You can't see this if the page is secure<div>
<%} %>

我已经成功地使用了这种方法......希望这会有所帮助。

于 2009-02-06T21:58:59.960 回答
1

Apache httpd 服务器的mod_rewrite模块可用于在 SSL 安全页面上嵌入 YouTube 视频而不会出现任何错误,如Adam Mershon 的博客中所述。

它涉及设置重写规则以将 SSL 域中的路径重定向到非 SSL YouTube:

.htaccess

RewriteEngine on
RewriteBase /
RewriteRule ^youtube/(.*)$ http://www.youtube.com/$1 [L]

这样您就可以在 HTML 中嵌入看似来自您自己域的 YouTube 链接 URL,例如:

<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>
于 2010-06-08T12:12:45.983 回答
1

我遇到了同样的问题并找到了解决方案。

它无需打开 SSL 认证即可工作。

分步指南修复谷歌浏览器

您可以查看下面列出的固定页面。它有指向 YouTube、Flickr 和许多其他网站的链接。它是安全的,现在已经有几个月了。希望对你也有帮助。

于 2012-04-10T00:35:16.560 回答
0

使用 Javascript 替换 URL 不起作用。IE7 拦截内容,然后是警告。

我尝试使用 (jQuery) $(function() { }); 它有点工作。您可以在对话框中单击是/否,仍然会加载内容。

于 2009-02-07T19:20:52.027 回答
0

这在我的世界里是一个严重的问题。它从用户那里赢得了我的工作评论,例如“它不方便用户”、“它坏了”或“它杀死了我的小猫”。

代理解决方案可能是唯一会推出的伪修复。只是它显然也不是一个完美的解决方案。

我尝试通过在 https 上运行尽可能多的网站来更好地导航这一点。显然,youtube 案例并没有因此而得到解决。

IE,多么愚蠢的 FUD 推动憎恶软件。我希望 IE9 真的像看起来那样好得多。只是,不支持 XP 意味着,它有点像它从未发布过。作为 n00biest 用户,会在不知不觉中对现状进行写保护,直到 XP 驱动的 2247 的中国天网最终为我们提供了红色药丸......

于 2011-03-31T22:03:49.477 回答
-4

您的问题发生在使用 Https 获取主页,而使用 http 获取一个或多个包含文件(图像、javascript、css 等)时。将 http url 修复为 https。

于 2009-02-06T21:19:01.057 回答