Javascript - 阻止图片请求并将请求的img-url替换为另一个

时间:2016-07-03 10:50:30

标签: javascript jquery html

我的网站上有一些Google-Scripts,不幸的是其中一个通过http而不是https(我的网站通过https提供)加载了一些额外的脚本和图像。我设法通过https加载脚本,并使用以下代码(from this question):

Object.defineProperty(HTMLScriptElement.prototype, 'src', {
    get: function(url) {
        return this.getAttribute('src')
    },
    set: function(url) {
        //console.log(url);
        var prefix = "http://";

        if (url.startsWith(prefix))
            url = "https://" + url.substr(prefix.length);

        //console.log('being set: ' + url);
        this.setAttribute('src', url);
    }
});

但是有一些图像文件仍然通过http加载。这些文件无法通过https获取。

我的想法是下载这些图像并将它们放在我的服务器上并从那里加载它们。有没有办法用JavaScript来覆盖图像路径?当然,我可以使用jQuery但在此之前,我必须在它被触发之前阻止图像请求。否则我的页面上会出现混合内容的问题。

所以我们把它放在一起: - 页面已加载,并在一段时间后发生某个用户操作(在我的情况下提交表单) - 基于此操作,将加载一个附加脚本,该脚本会在我的页面上放置虚拟键盘 - 这个键盘有一些无法通过https加载的图像,所以我想阻止这些请求 - 然后,我想用我的自定义image-urls

替换被阻止的图片网址

这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试填充基于JavaScript的HTTP代理,该代理拦截http请求预检。有一个流行的模拟JavaScript库,它称为伪装者, https://github.com/pretenderjs/pretender/blob/master/pretender.js#L266 我认为您可以使用伪装者的代码来帮助您弄清楚如何拦截http请求预检并将其重新路由到您选择的支持https的代理。