我在IE9中有一个导入jQuery的Greasemonkey-for-IE脚本。但是在安全页面上它不起作用。
我得到了:
SEC7111: HTTPS security is compromised by http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js
失败的代码是:
var script = document.createElement("script");
script.setAttribute("src",
"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");
我该如何使这项工作?该脚本不会导致Firefox出现问题。
答案 0 :(得分:38)
您可以使用类似以下方案的相对URL来消除更简单代码的问题:
var script = document.createElement("script");
script.setAttribute("src",
"//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");
这将在http://
页面上使用http://
,在https://
页面上使用https://
...这是一种解决问题的简单方法。
答案 1 :(得分:17)
据推测:使用https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js代替(或不信任第三方CDN(既值得信赖又不妥协),用于您的安全页面)
答案 2 :(得分:5)
错误消息是IE关于混合内容(安全页面上的HTTP和HTTPS资源)的新警告方式。 Here是一篇相关的MSDN博文。
使用
https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js
似乎也有效,虽然我在Libraries API overview.
中看不到它的正式引用答案 3 :(得分:2)
问题是,当您处于安全模式(即HTTPS)时,页面加载的所有文件也必须是HTTPS。 JQuery包括你在这里制作的是HTTP。
您需要检测页面是处于HTTP还是HTTPS模式(使用window.location.protocol()
),并调整JQuery包含的URL以适应。 (它只需要'http'之后的额外's')
答案 4 :(得分:0)
您正在使用https连接,并且您想要访问http连接。