我的代码中有一些第三方JavaScript文件,其中包括一些在事件后加载的其他JavaScript文件。我没有控制权来更改第三方JavaScript文件中的代码。
我的网站托管在https上,并且包含的文件正在通过http加载,因为浏览器不允许加载并显示“混合内容已阻止”。
我可以编写拦截器来拦截此调用并将http更改为https。
答案 0 :(得分:0)
在代码中包含第三方库时,加载的浏览器将向托管代码的服务器发出请求。您可以下载代码(如果可用),并且没有法律问题,然后将其托管在您的服务器上。您必须了解,并非所有数据都需要通过https(例如,以提高性能)。
看看这个link可以更好地了解该问题以及如何预防该问题。
答案 1 :(得分:0)
感谢您的评论,但我不认为我应该更改第三方库,因为它可能存在一些法律问题。
但是我发现可以通过拦截所有http调用并通过在全局JavaScript中添加以下代码来将其转发到https的方式来解决我的问题。
Object.defineProperty(HTMLScriptElement.prototype, 'src', {
get: function() {
return this.getAttribute('src')
},
set: function(url) {
var prefix = "http://";
if (url.startsWith(prefix))
url = "https://" + url.substr(prefix.length);
console.log('being set: ' + url);
this.setAttribute('src', url);
}
});
最初在这里发布:Force JavaScript to load additional resources over https