我在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')));
答案 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格式加载不安全的内容。
如果我们使用隐身窗口来加载包含不安全内容的网站,那么它就能正常运行。