问题
一些浏览器会禁止http内容展现在https页面中。比如我们在squarespace里插入一个Youku的视频(Youku嵌入的视频不支持https),就会无法播放
解决方案
我们需要找一个免费的支持https的serve视频的地方。第一个选择就是七牛云,搞了半天发现qiniu的ssl证书是invalid的…
于是又想起了“可怜的”LeanCloud。下载云代码,把要托管的文件放到public下,avoscloud deploy
avoscloud publish
就好啦,在setting里设置一下web主机的二级域名。就能直接访问了。
squarespace
squarespace比较特别的是它要求embed video,比如youtube之类的用iframe的玩意儿。但国内的那些视频网站基本都不支持https的iframe。好吧,这个也用LeanCloud解决吧。那就写个HTML来解决它。这个HTML要能处理各种Video的请求的话就得读到url里的query。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="content"></div>
<script>
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var videoUrl = getParameterByName('video');
if (typeof videoUrl != 'undefined') {
var node = document.createElement("video");
node.width = window.innerWidth;
node.height = window.innerHeight;
node.autoplay = true
var controlAttr = document.createAttribute('controls');
var srcAttr = document.createAttribute('src');
srcAttr.value = videoUrl;
node.setAttributeNode(srcAttr);
node.setAttributeNode(controlAttr);
document.getElementById('content').appendChild(node);
}
</script>
</body>
</html>
没做任何优化,只处理了video这种query,大概意思就是这样。