5

企業ドメインにある IE9 を搭載したマシンが (リンクから) Web サイトに移動するたびに、次のウィンドウ プロパティ (styleMedia、clientInformation、screen、history、navigator、localStorage、performance) のいずれかにアクセスすると、Permission Denied エラー ダイアログが表示されます。 、セッションストレージ)。最初のページの読み込みは機能しますが、同じページへのリンクがあるとエラーが発生します。

もともと、これは JQuery ライブラリがロードされたときに明らかになりました。JQuery が wi​​ndow.navigator.userAgent に初めてアクセスすると、パーミッション拒否エラーが発生しました。

すべてのマシンは Windows 7 64 ビット Enterprise SP1 です。以下のコードは、IIS から実行するか、.html ファイルを直接開いて実行できます。

この問題は、当社の企業ドメイン以外では再現できません。当社の企業環境に何らかのポリシーがあると思われますが、どのポリシーがこの問題の原因であるかを特定できませんでした。

この問題は次のように軽減できます。

  • IE7 または IE8 のドキュメント モードに切り替えてから IE9 標準のドキュメント モードに戻すと、ブラウザはそれ以降動作する状態になります。
  • ページを更新すると 1 つのページの読み込みが修正されますが、リンクがクリックされ、リンクを介して別のページ (現在表示しているページと同じページである可能性があります) が読み込まれると、問題が再発します。
  • ドメイン外のマシンから Web サイトに移動します。

test.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 を開いてページ上のリンクをクリックします。

testWindow.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 のサポート担当者と協力して、どのポリシーが問題を引き起こしているかを突き止めました。Microsoft のサポート担当者は、私が自分の作業用マシンで問題を再現したときに、ポリシーがどのように使用されているかを記録および分析しました。

もう 1 つの方法として、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 に答える