在我更改src属性后,视频仍会加载https?

时间:2015-07-20 10:54:38

标签: javascript ssl video

我写了一个小的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网址? 任何帮助将不胜感激。

1 个答案:

答案 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)可能就够了

相关问题