如何解决IE11中遇到错误:“SEC7111: HTTPS 安全受到(null)的威胁”
2015年10月21日

最近在IE11中遇到网页不工作并报错: “SEC7111: HTTPS 安全受到(null)的威胁” 的问题。调试后发现这是由于在HTTPS页面调用 document.write() 方法所导致。

问题现象

一个HTTPS的页面在IE11中不工作,在F12中发现有错误信息:“SEC7111: HTTPS 安全受到(null)的威胁”,该页面在其他IE版本中一直没有问题。

问题分析

在对页面脚本进行分析后,发现是在执行 document.write() 方法时抛出了该异常。

进一步测试后发现:在IE11的文档模式9~11下,任何HTTPS页面中执行 document.write() 方法均会失败并抛出异常 “SEC7111: HTTPS 安全受到(null)的威胁”

我们可以简单地通过以下步骤重现这个问题。

  1. 使用IE11打开:https://www.google.com。

  2. 打开F12开发者工具,确保当前的文档模式大于等于9。

    确保文档模式大于等于9

  3. 在控制台中运行脚本:

    document.write('hello')
  4. 脚本执行失败并抛出异常:“SEC7111: HTTPS 安全受到(null)的威胁”。

    脚本执行失败并抛出异常:“SEC7111: HTTPS 安全受到(null)的威胁”

目前暂不确定这是产品设计还是一个bug,个人更偏向于是个bug,因为Chrome、Firefox、Microsoft Edge和其他版本IE均没有这个问题。

解决方案

  1. 使用DOM操作的方法来修改页面中的元素,而不要使用 document.write()

  2. 加入 X-UA-Compatible 的meta标签或者HTTP返回头来指定IE运行在旧版本的文档模式下,如5、7、8。

    X-UA-Compatible meta标签:

    <html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=8" />
        ...
    </head>
    <body>
    </body>
    </html>

    X-UA-Compatible HTTP返回头:

    X-UA-Compatible HTTP返回头