【问题标题】:IE9 HTTPS security is compromised by my Greasemonkey script?我的 Greasemonkey 脚本破坏了 IE9 HTTPS 安全性?
【发布时间】:2011-04-23 18:43:12
【问题描述】:

我在 IE9 中有一个 Greasemonkey-for-IE 脚本,它正在导入 jQuery。但在安全页面上它不起作用。

我明白了:

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

【问题讨论】:

  • @Chris:默认情况下禁止混合内容是一项功能,而不是错误 - 它可能也会保留在最终版本中。在 beta 上进行测试并没有错(除非你要求 SO 开发团队为你做这件事;))。
  • @Spudley - 这是一个相当糟糕的态度......如果我的代码已经在所有其他浏览器上以符合标准的方式工作,那么不应该调整我的代码。 ..
  • @Spudley:IE9 似乎,嗯,在标准合规性方面足够 说开发人员可能会遇到一些问题,也许还有膝盖擦伤;但整体效果可能不会是“崩溃和燃烧”。
  • @Nick - IE9 是一个新的浏览器。它比 IE8 好很多,实际上是一个相当不错的浏览器。它有很多新功能。它也有新的错误、新的怪癖,当然还有很多它不支持的东西。它与其他浏览器或标准都不是 100% 兼容。就像其他所有浏览器一样。作为 Web 开发人员,您应该在想要支持的每个浏览器中进行测试。包括 IE9。
  • @Spudley - 当它远程接近正确实现 JavaScript 时,然后我将测试...结果不是 beta 质量(例如,它不是功能完整),它几乎没有 alpha 质量...在 IE9 中测试?当然,但直到它远程接近完成。现在,追逐他们的怪癖的怪癖完全是浪费时间,而不是我应该修复的代码。 它并不比IE8好(是的,你没看错),它将是完成后,但目前它有一堆未知的问题是问号如果他们会被修复...IE8至少是一个已知的数量。

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


【解决方案1】:

问题在于,当您处于安全模式(即 HTTPS)时,页面加载的所有文件也必须是 HTTPS。您在此处创建的 JQuery 包括 HTTP。

您需要检测页面是HTTP还是HTTPS模式(使用window.location.protocol()),并调整JQuery包含的URL以适应。 (它只需要'http'之后的附加's')

【讨论】:

    【解决方案2】:

    您可以使用更简单的代码来消除这个问题,方法是使用这样的相对于方案的 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://...解决问题的简单得多的方法。

    【讨论】:

    • 协议相关的 URL 是 now considered an anti-pattern。最好直接使用 HTTPS。
    • @IanDunn 我并不反对总的来说,但这并不是普遍适用的。 SSL/TLS 存在性能问题,无论运行全球数据中心的人如何,并且没有延迟问题可能会告诉您。据我所知,光速最近没有改变,但我明天再检查一下:)
    【解决方案3】:

    错误消息是 IE 警告混合内容(安全页面上的 HTTP 和 HTTPS 资源)的新方式。 Here 是一篇相关的 MSDN 博文。

    使用

    https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js
    

    似乎也可以,虽然我在Libraries API overview. 中看不到官方引用它

    【讨论】:

    【解决方案4】:

    您正在使用 https 连接,并且想要访问 http 连接。

    【讨论】:

      【解决方案5】:

      大概:使用 https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js 代替(或不信任第三方 CDN(既值得信赖又不被泄露)用于您的安全页面)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-11
        • 1970-01-01
        相关资源
        最近更新 更多