Подтвердить что ты не робот

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: добавление сайтов в доверенную зону также не работает.

4b9b3361

Ответ 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.