IE9 HTTPS安全性受到我的Greasemonkey脚本的影响?

时间:2010-10-11 11:43:06

标签: javascript jquery internet-explorer greasemonkey internet-explorer-9

我在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出现问题。

5 个答案:

答案 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连接。