如何在URL中使用HTTPS而不是http嵌入YouTube视频?

时间:2012-01-31 作者:Richard B

我正在运行一个仅通过SSL/https进行通信的站点,因此如果我使用http嵌入youtube视频,我将收到一条错误消息,说明该站点不完全安全。有没有可能重写一些东西,以便WordPress接受https,并且仍然自动嵌入添加到内容区域的youtube链接?因为现在,当我尝试嵌入https youtube链接时,只显示URL,没有电影。

Update

我尝试在函数中添加使用此代码的提供程序。php,但它什么都不做:

wp_oembed_add_provider(\'https://youtu.be/*\', \'https://youtube.com/oembed\' );
wp_oembed_add_provider(\'#https://(www\\.)?youtube.com/watch.*#i\', \'https://youtube.com/oembed\', true);
wp_oembed_add_provider(\'http://youtu.be/*\', \'https://youtube.com/oembed\' );
wp_oembed_add_provider(\'#http://(www\\.)?youtube.com/watch.*#i\', \'https://youtube.com/oembed\', true);

4 个回复
最合适的回答,由SO网友:Otto 整理而成

http://core.trac.wordpress.org/ticket/18719 现在有一个工作补丁。

编辑:插件代码以执行类似操作,直到补丁进入:

wp_oembed_add_provider(\'#https://(www\\.)?youtube.com/watch.*#i\', \'http://youtube.com/oembed?scheme=https\', true);
wp_oembed_add_provider(\'https://youtu.be/*\', \'http://youtube.com/oembed?scheme=https\', false );

SO网友:bradt

Otto的解决方案在WP 3.6中不起作用,可能是因为Oembed在core中已经更改,现在确实匹配https://,所以添加的提供者永远不会匹配。虽然https://现在在core中匹配,但它始终提供http://嵌入,即使原始URL是https://,所以这里仍然存在相同的问题。

我决定将所有oembeds协议转换为相对的:

function my_embed_oembed_html( $html ) {
    return preg_replace( \'@src="https?:@\', \'src="\', $html );
}
add_filter( \'embed_oembed_html\', \'my_embed_oembed_html\' );

SO网友:troutacular

您可以在函数中破解一个强制https返回。php文件,用于搜索具有以http开头的src并替换https的IFrame。[我省略了这些URL的“be”,因为一些共享URL是youtu.be和youtube.com]

//Embed Video Fix
function add_secure_video_options($html) {
   if (strpos($html, "<iframe" ) !== false) {
        $search = array(\'src="http://www.youtu\',\'src="http://youtu\');
        $replace = array(\'src="https://www.youtu\',\'src="https://youtu\');
        $html = str_replace($search, $replace, $html);

        return $html;
   } else {
        return $html;
   }
}
add_filter(\'the_content\', \'add_secure_video_options\', 10);

SO网友:jfacemyer

Youtube支持视频的https url(只需在常规url中添加“s”)。然而,他们还表示:

特别是,此时只能通过HTTPS访问YouTube播放器代码。当您在嵌入代码中使用HTTPS URL时,YouTube播放器加载的实际视频比特流和一些附加内容仍然可以通过标准HTTP连接访问。

因此,看起来您还无法获取https视频源。你发布的trac链接似乎证实了这一点:(Otto42评论7)“除非YouTube在iframe中返回https结果,否则在大多数浏览器中嵌入这样的链接只会导致页面断开,因为iframe不是SSL。”

参考号:http://apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.html

您还可以签出此解决方案:http://www.adammershon.com/display-youtube-videos-on-ssl-page/ (这将基本上“服务”视频,就好像它在您的页面上一样。)

(我没有看到关于这个主题的任何更新。)

结束