我的Greasemonkey脚本破坏了IE9 HTTPS安全性?
我在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出现问题。
大概:改为使用https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js (或者不信任第三方CDN(既要值得信赖又不妥协),以保护您的安全页面)
您可以使用类似于方案的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://
…这是解决问题的一种更简单的方法。
错误消息是IE关于混合内容(安全页面上的HTTP和HTTPS资源)的新警告方式。 这是一篇相关的MSDN博客文章。
运用
https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js
似乎也可以工作,虽然我在Libraries API概述中看不到它的正式引用。
问题是,当您处于安全模式(即HTTPS)时,页面加载的所有文件也必须是HTTPS。 JQuery包括你在这里制作的是HTTP。
您需要检测页面是否处于HTTP或HTTPS模式(使用window.location.protocol()
),并调整JQuery包含的URL以适应。 (所有它需要的是’http’之后的附加’s’)
您正在使用https连接,并且您想要访问http连接。