WebSocket на IE10, предоставляющий SecurityError
Разработчик Grettings, это мой первый quetion, поэтому не стесняйтесь говорить мне, если у меня что-то не так.
Fisrt, прошу прощения, если мой английский немного "сломан", это не мой родной язык. Надеюсь, я не говорю тарабарщину.
В настоящее время я разрабатываю веб-сайт под IE10 (в Windows 8), используя WebSockets в JavaScript. Он отлично работает в Firefox 18 и Chrome 25, но в IE10 я получаю SecurityError, когда устанавливаю соединение.
То, что я делаю, выглядит довольно страшно:
websocket = new WebSocket('wss://hello.dev.mydomain.net');
Но IE не нравится:
SCRIPT5022: SecurityError
script находится на https://test.dev.mydomain.net" (а не на самом деле).
Меня беспокоит то, что если я просто дважды щелкнул файл на своем локальном компьютере (например, файл://...), он просто работает. Даже самое худшее: если я использую fiddler для мониторинга HTTP-трафика... он также работает. В то время как кажется, что нет никакой связи вообще без скрипача, как подробно описано в спецификациях API. (См. Ниже.)
Судя по этому, исключение должно появиться и в Chrome/Firefox... но это не так. Поэтому я сомневаюсь, что это связано с HTTP/HTTPS. В любом случае, я использую сокет wsS на странице httpS... Кроме того: когда я заменяю wss-адрес на другой действительный сервер, найденный в онлайн-примере, он работает.
Я не знаю, является ли это актуальным, но IP из test.dev.mydomain.net - 10.14.x.x, где hello.dev.mydomain.net - 194.247.x.x. Я не знаю, может ли это вызвать какую-то безопасность только в IE...
Одна (более?) последняя вещь: у меня есть сертификат для *.dev.mydomain.net, у IE, похоже, нет проблем с этим. script originaly находится на сервере с именем my.name.dev.mydomain.net, но поскольку я получаю доступ к нему из другого URL-адреса (я получил перенаправление, так как мы сначала подумали, что это может быть какая-то проблема с одной и той же проблемой происхождения) я не вижу, как это может иметь значение. По крайней мере, я надеюсь, что это не...
Любая идея приветствуется.
EDIT: добавление сайтов в доверенную зону также не работает.
Ответы
Ответ 1
Ну, мой вопрос не был настолько успешным, поэтому я опубликую "обходной путь", который я нашел.
Я получил еще один адрес для сайта, в 194.247.. тоже. Это, магически, решило это. Угадайте, что IE не любит смешивать локальные и внешние вещи и смотрит на IP.
В любом случае, я надеюсь, что это может пригодиться всем, кто получил ту же проблему.
Если у вас есть решение для решения "реальной" проблемы, настроив IE, дайте мне знать:)
Приветствия,
Ответ 2
Похоже, IE бросает SecurityError, если вы пытаетесь открыть websocket в локальном (intranet) домене. Чтобы преодолеть это, вы можете отключить автоматический алгоритм IE для распознавания локальных сайтов. Это можно сделать в Tools > Internet Options > Security > Local Intranet > Sites
.
![intranet detection settings]()
Снимите все флажки (или только конкретные, если вы знаете, как именно ваш домен оказался в интрасети).
Обратите внимание, что IE использует (помимо прочего) настройки своего прокси-сервера для определения локальных сайтов: если ваш домен указан как исключенный из прокси-сервера в настройках прокси-сервера, то он, вероятно, будет рассматриваться как интрасеть. Вот почему WebSockets работают, если вы включаете Fiddler: он изменяет параметры прокси-сервера IE и, следовательно, изменяется список сайтов интрасети.
Ответ 3
Я столкнулся с ошибкой (хотя он не сказал часть SCRIPT5022, а просто сообщает "ScriptError" ). Я обошел проблему, нажав "Надежные сайты", а затем добавив машину, на которой размещен удаленный веб-сайт. Примечание. Чтобы добавить к доверенным сайтам,
-
Я должен был указать адрес без части "ws://" (например, mymahcine.mydomain.com)
-
Мне нужно было снять флажок с надписью "Требуется проверка сервера https://".
- После того, как я закончил добавление домена, я снова проверил флажок "Требовать проверку сервера (https://). Я бы рекомендовал всем сделать то же самое. Отмена флажка - это только обходной путь для добавления сайтов, t начинать с https (скорее ws://в моем случае)
Ответ 4
Имя хоста/IP-адрес клиента должно быть таким же, как имя сервера/хоста сервера, которое прослушивает в противном случае вы получили бы вышеуказанную ошибку.
1) Убедитесь, что имя хоста сервера настроено для прослушивания на IP/localhost и т.д. и не указывать явно имя сервера хоста
2) используйте одно и то же имя хоста в клиенте. Это решит проблему. Это сработало для меня...
Ответ 5
У меня была эта проблема в Windows7/IE11 после применения исправления безопасности. Для Windows10/Edge эта же история.
Поскольку это локальный websocket (ws://localhost), вы должны добавить ws:\\localhost\
в настройки Internet Explore (Инструменты > Свойства обозревателя > Безопасность > Локальная интрасеть > Сайты > Дополнительно).
![Настройка локальных локальных сетей локальной сети IE11]()
В Windows 10/Microsoft Edge вы найдете эту конфигурацию в Панели управления > Свойства обозревателя.
UPDATE
Адрес вашей веб-страницы (https://test.dev.mydomain.net) также должен быть добавлен в зону локальной интрасети. Обратите внимание, что на изображении должен быть добавлен адрес webapp.