5

每当我们公司域中的具有 IE9 的机器导航到网站(从链接)时,当访问以下任何窗口属性(styleMedia、clientInformation、screen、history、navigator、localStorage、performance)时,我们都会收到 Permission Denied 错误对话框,会话存储)。初始页面加载工作,但是当您有指向同一页面的链接时,会发生错误。

最初,这在加载 JQuery 库时表现出来。JQuery 第一次访问 window.navigator.userAgent 时会出现权限被拒绝错误。

我们所有的机器都是 Windows 7 64 位 Enterprise SP1。下面的代码可以从 IIS 或直接打开 .html 文件运行。

我们无法在公司域之外重现此问题。我们怀疑我们公司环境中的某些政策,但无法确定导致此问题的政策。

我们可以通过以下方式缓解这个问题:

  • 切换到 IE7 或 IE8 文档模式然后回到 IE9 标准文档模式将使浏览器进入从那时起可以工作的状态。
  • 刷新页面将修复单个页面加载,但当单击链接并通过链接加载另一个页面(可能与您当前所在的页面相同)时,该问题将再次出现。
  • 从我们域之外的机器导航到该网站。

测试.html

<html>
<head> 
    <title>Permission Denied</title>
</head>
<body>
    <a href="test.html">Click Here</a>
    <script type="text/javascript">
        alert(window.navigator);
    </script>
</body>
</html>

要查看所有无法访问的属性,我们可以打开此 html 并单击页面上的链接:

测试窗口.html

<html>
<head> 
    <title>Permission Denied</title>
</head>
<body>
    <a href="testWindow.html">Click Here</a>
    <script type="text/javascript">
        var deniedProperties = '';
        for (var i in window) {
            var obj = window[i];
            if (obj == null) continue;

            try {
                obj._____x = 1; // Attempt to access the object and set a new value on that object.
            }
            catch (e) {
                if (e.number == -2146828218) { // Permission Denied error number.
                    deniedProperties += i + '\n';
                }
            }
        }

        alert('Permission Denied:\n' + deniedProperties);
    </script>
</body>
</html>



更新

这是针对 IE6 问题而实施的域策略。通过与 Microsoft 的支持人员合作,我们发现了导致问题的策略,当我在工作机器上重现问题时,该支持人员记录并分析了策略的使用情况。

您可以尝试的另一个想法是在 Active Directory 中设置一个您拥有完全修改权限的子组织单位。让它继承公司的所有策略,然后使用二进制消除来阻止策略,直到找到导致问题的策略。

4

1 回答 1

2

我们遇到了同样的问题,发现在注册表中搜索FEATURE_OBJECT_CACHING并设置iexplore.exe = 1可以修复它。

对我们来说,这实际上是在:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_OBJECT_CACHING

于 2012-06-05T15:03:10.767 回答