Ошибка отказа в разрешении в корпоративной среде - PullRequest
4 голосов
/ 14 марта 2012

Всякий раз, когда машина с IE9, которая находится в нашем корпоративном домене, переходит на веб-сайт (по ссылке), мы получаем диалоговое окно с сообщением об ошибке «Отказано в доступе» при обращении к любому из следующих свойств окна (styleMedia, clientInformation, screen, history, navigator,localStorage, производительность, sessionStorage).Начальная загрузка страницы работает, но когда у вас есть ссылка на ту же страницу, возникает ошибка.

Первоначально это проявлялось при загрузке библиотеки JQuery.При первом обращении JQuery к window.navigator.userAgent возникает ошибка «Отказано в доступе».

Все наши машины - Windows 7 64-битная версия Enterprise SP1.Приведенный ниже код можно запустить из IIS или непосредственно из файла .html.

Мы не можем воспроизвести эту проблему за пределами нашего корпоративного домена.Мы подозреваем некоторую политику в нашей корпоративной среде, но не смогли определить, какая политика вызывает эту проблему.

Мы можем решить эту проблему следующим образом:

  • Переключение в режим документов IE7 или IE8, а затем обратно в стандарты документа IE9. После этого режим браузера переведет браузер в состояние, в котором он будет работать с этого момента.
  • Обновление страницы исправит загрузку одной страницы, нопроблема будет повторяться, если щелкнуть ссылку и по ссылке будет загружена другая страница (может быть той, на которой вы сейчас находитесь).
  • Перейдите на веб-сайт с компьютера, расположенного за пределами нашего домена.

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, который записывал и анализировал, как политики использовались, когда я воспроизводил проблему на моей рабочей машине.

Еще одна идея, которую выМожно попробовать настроить дочернюю организационную единицу в Active Directory, для которой у вас есть полные разрешения для изменения.Пусть он унаследует все политики от корпорации, а затем использует бинарное исключение для блокировки политик, пока не найдет ту, которая вызывает проблему.

1 Ответ

2 голосов
/ 05 июня 2012

У нас возникла та же проблема, и мы обнаружили, что поиск в реестре FEATURE_OBJECT_CACHING и установка iexplore.exe = 1 исправили ее.

Для нас это было на самом деле:

HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Политики \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_OBJECT_CACHING

...