2010-11-10 3 views
1

Мы видим прерывистую ошибку JavaScript «Доступ запрещен» в клиентском приложении в IE8. Иногда эта ошибка возникает для некоторых пользователей и никогда не используется для других пользователей.Ошибка JavaScript «Доступ запрещен» - нет iframes

Я могу достоверно воспроизвести ошибку в моем браузере, перепрыгивая через несколько обручей:

  • Перейти на страницу в вопросе (обратите внимание на зону Интернета, даже если веб-сервер бегущий тестового сервера в нашей подсети)
  • Open Internet Properties Security (сообщение отображается, что «некоторые параметры управляются системным администратором»)
  • Open Local Intranet
  • Нажмите Сайты
  • Нажмите OK
  • Нажмите OK
  • Примечание зона изменилась к локальной интрасети (хотя я не производил изменения)
  • Нажмите раскрывающийся список на странице
  • JavaScript ошибка «типа является нулевым или нет объект»

Debugging в эту ошибку показывает, что бросал в Microsoft.Ajax.js в„Sys.UI.DomEvent“функции, и ходьба вверх стек вызовов показывает, что ошибка корня происходит в«Sys. UI.DomEvent.addHandler ", когда он вызывает" Sys.UI.DomElement._getWindow (a) .event "(a имеет тип DispHTMLWindow2), который бросает исключение:

name: TypeError 
description: “Access is denied.” 
message: “Access is denied.” 
number: -2147024891 

Другие пользователи видят ошибку, не входя в Интернет Свойства безопасности.

Все исследования, проведенные мной по ошибкам «Отказано в доступе», указывают на проблему с использованием iframes из разных источников, поэтому я удалил все фреймы со страницы, о которой идет речь, но я все еще вижу ошибку.

Что может привести к ошибке JavaScript «Доступ запрещен» на странице без каких-либо iframe?

+1

Любые ресурсы, запрашиваемые из другого протокола (http против https) или порта? Запросы Ajax принимаются на другой адрес? –

+0

Нет, глядя в Fiddler, весь трафик на тот же хост/порт. – brien

ответ

1

Оказалось, что это происходит из-за того, что в некоторых случаях Интернет-зона безопасности периодически переключается, когда пользователи находятся на конкретной странице, которая широко использует JavaScript. Когда страница в IE меняет зону безопасности после ее загрузки, она не может выполнить JavaScript, который обращается к родительскому окну элементов управления на странице.

По-прежнему не уверен, что вызывает изменение страницы в зонах безопасности, но это происходит, только когда мы ссылаемся на сайт по IP, а не на имя хоста (которое всегда отображается как зона локальной интрасети).

+0

Привет, я тоже кое-что встретил ... вы поняли, что это такое? –