22

我在 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

4 回答 4

19

根据此 Chrome 支持问答,您可以使用以下命令行标志启动 Chrome,以防止 Chrome 检查不安全的内容:

--allow-running-insecure-content

这是一些关于如何使用命令标志运行 Chrome 的文档

于 2013-03-14T19:48:05.307 回答
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);
于 2012-12-27T17:59:01.150 回答
1

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

我们将使用 Amazon CloudFront 解决它。他们使用经过验证的证书来服务 HTTPS。

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

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

于 2014-09-08T13:40:12.400 回答
0

我遇到了同样的问题,发现如果我们在 chrome 中登录到我们的 google 帐户,那么 Chrome 会停止在 https 中加载不安全的内容。

如果我们使用隐身窗口来加载具有不安全内容的网站,那么它将起作用。

于 2017-03-01T03:52:12.237 回答