Обнаружение текущей зоны безопасности Internet Explorer
-
05-07-2019 - |
Вопрос
Существует ли какой-либо метод программного определения текущих настроек зоны безопасности для Internet Explorer?
Я хотел бы знать, когда на моем сайте будет заблокирован элемент управления ActiveX XMLHttpRequest из-за политики безопасности IE, но до того, как сайт фактически попытается его создать и, таким образом, вверху появится желтая полоса (с надписью: «Чтобы защитить вашу безопасность , Internet Explorer запретил этой веб-странице запуск сценариев или элементов управления ActiveX, которые могут получить доступ к вашему компьютеру.")
Спасибо.
Решение
Примечание:Я не могу удалить принятый ответ, но вы можете найти этот ответ полезен.
Оригинальный ответ:
В JavaScript нет дескриптора для определения зоны безопасности, используемой IE.
Чтобы сделать то, что вам нужно, вы можете проверить document.location и определить на его основе зону безопасности.
Другие советы
В IE7 вы можете использовать следующий код JavaScript, чтобы получить представление о том, заслуживает ли ваш сайт доверия:
window.status = "test";
if (window.status == "test")
alert("Trusted, or local intranet");
else
alert("Not trusted, or internet");
Это основано на том факте, что в IE7 и более поздних версиях сценарии больше не могут устанавливать текст строки состояния с помощью метода window.status в Интернете и зонах ограниченного доступа.См. Примечания к выпуску Internet Explorer 7
Зона безопасности не имеет значения, поскольку пользователи Windows могут сами определять, какие протоколы какой зоной обрабатываются.Например, я добавил всю зону http и всю зону https в зону доверенных сайтов (зона 2).Это делается через ключ
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\ProtocolDefaults
Вы можете проверить наличие document.protocol через JavaScript, но чем это вам поможет?
if (document.protocol == "HTTP (HyperText Transfer-Protokoll)")
Вы предполагаете, что это зона Интернета, но на моем компьютере это доверенная зона со своими индивидуальными настройками безопасности.Дело в том, что jscript не позволит вам получить отдельные значения настроек безопасности для каждой зоны.
Можно выполнять объекты ActiveX без этой дурацкой желтой полосы, но вам нужно добавить направляющие объектов com в список безопасных объектов com.Это делается через реестр.Значение по умолчанию небезопасно для большинства объектов, за исключением некоторых глупых и бесполезных дерьмовых объектов, таких как flash activex, wmp activex и тому подобное.
Я хотел бы знать, когда на моем сайте будет заблокирован элемент управления ActiveX XMLHttpRequest из-за политики безопасности IE.
Вы не можете этого сделать, даже если бы знали, в какой зоне вы находитесь, поскольку вы не можете прочитать настройки каждой зоны, а начиная с IE6SP2 существует больше настроек, влияющих на ActiveX, которые невозможно настроить для каждой зоны.(IE7 имеет еще больше настроек, специфичных для управления.)
Я не знаю способа спекулятивно создать XMLHttpRequest и избежать желтой полосы, за исключением использования только собственного объекта «новый XMLHttpRequest()», который делает вас несовместимым с IE6.