我写了一个小的JS代码,它将src
属性网址从https更改为http。
我之所以这样做,是因为我公司对SSL流量进行了整形,以防止SSTP和SSL隧道进入外部,导致网页出现故障,特别是通过https提供的视频和流。
这是代码:
function changeSrc(){
var srclist = document.getElementsByTagName('source'); //find all source tags
for (var i = 0; i < srclist.length; i++) {
src = srclist[i].getAttribute("src"); //get current https source
newsrc = src.replace("https", "http"); //change https to http
srclist[i].setAttribute("src", newsrc); // replace src attrib. with new url
}
}
此功能运行正常(作为防篡改扩展),但问题是即使更改src
后视频仍然可以通过https播放。
我怀疑可能是玩家记得第一个视频网址(https一个)并且在更改网址后,它需要某种刷新或者某些内容来缓冲和播放新的http网址?
任何帮助将不胜感激。
答案 0 :(得分:0)
不起作用,我认为你不能用音频/视频标签做到这一点
没有使用篡改的经验,虽然没有多年的油脂,但
但我不得不问,为什么你需要将https更改为http?
无论如何,您可能要做的是从DOM中删除包含的视频/音频元素,更改已删除片段中的源src,然后将视频/音频片段元素重新插入其来自的位置
我认为这可能与我所描述的一样(未经测试)
function changeSrc(){
var mmlist = document.body.querySelectorAll('video,audio'); //find all video/audio tags
for (var i=0; i<mmlist.length; i++) {
var mm = mmlist[i];
var par = mm.parentElement;
var sib = mm.nextSibling;
par.removeChild(mm);
var srclist = mm.querySelectorAll('source');
for (var j = 0; j < srclist.length; j++) {
var src = srclist[j].getAttribute('src');
var newsrc = src.replace("https", "http");
srclist[j].setAttribute('src', newsrc);
}
// par.removeChild(mm); could do it here instead, maybe?
par.insertBefore(mm, sib);
}
}
老实说,你可能根本不需要删除音频/视频标签..只是par.insertBefore(mm,sib)可能就够了