如何强制加载Chrome中动态,不安全的内容?

时间:2012-12-27 17:37:52

标签: javascript google-chrome https

我在https中使用Jira,我想用一些额外的JS做一些调整。我的JS托管在一台不安全的服务器上(没有https可用)。

当我通过将不安全的JS文件插入DOM(使用浏览器扩展名)动态加载它时,Chrome会告诉我:

  

[已屏蔽] https://jiraserver/browse处的页面运行了来自http://myserver/jira.js的不安全内容。

我可以看到这是多么安全和所有,但我不在乎。我想加载那个不安全的JS文件。我怎么能告诉Chrome相信我并且按照我说的去做?

我的插入方法(在扩展代码中):

document.body.appendChild((function(s){s.src='http://myserver/jira.js';return s;})(document.createElement('script')));

4 个答案:

答案 0 :(得分:20)

根据this Chrome Support Q&A,您可以使用以下命令行标记启动Chrome,以防止Chrome检查不安全的内容:

--allow-running-insecure-content

以下some documentation介绍如何使用命令标记运行Chrome

答案 1 :(得分:3)

Chrome根本不会在安全页面中加载不安全的脚本。

您的jira.js 是否已从服务器加载?将其注入页面的最佳方法是将其包含在您的扩展包中。

var s = document.createElement('script');
s.src = chrome.extension.getURL("jira.js");
s.onload = function() {
    this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);

如果您必须从服务器加载它,我想您的扩展程序可以对脚本发出XHR请求,然后将响应注入页面。

// make a XHR request, then...
var s = document.createElement('script');
s.textContent = codeFromXHR;
(document.head||document.documentElement).appendChild(s);
s.parentNode.removeChild(s);

答案 2 :(得分:1)

我有同样的问题: 我们的客户端将我们服务器中托管的CSS文件和js文件链接到一个不安全的域。

我们将使用Amazon CloudFront解决此问题。他们使用经过验证的证书为HTTPS服务。

这不是一个糟糕的解决方案,因为CDN通常是一个好主意,而且这些资源有点静态。 (CSS文件是为每个客户端量身定制的,实际上是生成的,但是可以配置一个理智的TTL,并在需要时刷新CDN)

请注意,根据您的数据负载,CDN解决方案甚至可能比实际购买证书更实惠。

答案 3 :(得分:0)

我遇到了同样的问题,发现如果我们以Chrome格式登录我们的Google帐户,则Chrome会停止以https格式加载不安全的内容。

如果我们使用隐身窗口来加载包含不安全内容的网站,那么它就能正常运行。