WebSocket en IE10 dando un SecurityError


Actualmente estoy desarrollando un sitio web bajo IE10 (en Windows 8), utilizando WebSockets en JavaScript. Funciona bien en Firefox 18 y Chrome 25, pero en IE10 obtengo un SecurityError cuando establezco la conexión.

Lo que estoy haciendo parece bastante straghtforward:

websocket = new WebSocket('wss://hello.dev.mydomain.net');

Pero IE no le gusta:

SCRIPT5022: SecurityError 

El script está en " https://test.dev.mydomain.net " (obviamente no es la dirección real).

Lo que me molesta es que si simplemente hago doble clic en el archivo en mi equipo local (por ejemplo, file://...) simplemente funciona. Peor aún: si utilizo fiddler para monitorear el tráfico HTTP... también funciona. Mientras que parece que no hay conexión en absoluto sin fiddler, como se detalla en las especificaciones de la API. (Véase más adelante.)

A juzgar por websocket spec, la excepción también debería aparecer en Chrome/Firefox... pero no es así. Así que dudo que tenga algo relacionado con HTTP / HTTPS. En cualquier caso, estoy usando un socket wsS en una página httpS... Por otra parte: cuando reemplace la dirección wss por otro servidor válido que se encuentra en un ejemplo en línea, funciona.

No se si esto es relevante, pero la IP de test.dev.mydomain.net es 10.14.x. x donde hello.dev.mydomain.net es 194.247.x. x. No se si podría desencadenar algún tipo de seguridad en IE solamente...

Una cosa más: tengo un certificado para *.dev.mydomain.net, es decir, no parece tener problemas con él. El script reside originalmente en un servidor llamado my.name.dev.mydomain.net, pero desde que estoy accediendo desde otra URL (obtuve una redirección ya que primero pensamos que podría haber sido algún tipo de problema de Política del Mismo Origen), no veo cómo podría importar. Al menos espero que no...

Cualquier idea es bienvenida.

EDITAR: agregar los sitios a la zona de confianza tampoco funciona.

Author: Jari Keinänen, 2013-02-27

7 answers

Parece que IE lanza un SecurityError si está tratando de abrir un websocket en un local (intranet) dominio. Para superar esto, puede desactivar el algoritmo automático de IE para reconocer sitios locales. Esto se puede hacer en Tools > Internet Options > Security > Local Intranet > Sites.

configuración de detección de intranet

Desmarque todas las casillas de verificación (o solo una en particular, si sabe exactamente cómo su dominio terminó en intranet).

Tenga en cuenta que IE utiliza (entre otras cosas) su configuración de proxy para determinar los sitios locales: si su dominio es listado como excluido de proxy en la configuración de proxy, entonces probablemente será tratado como intranet uno. Es por eso que los WebSockets funcionan si habilita Fiddler: modifica la configuración del proxy IE y, por lo tanto, la lista de sitios de intranet cambia.

 40
Author: Georgii Ivankin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-22 12:42:17

Bueno, mi pregunta no fue tan exitosa, así que publicaré la "solución" que encontré.

Tengo otra dirección para el sitio web, en 194.247.. también. Esto, mágicamente, lo resolvió. Supongo que IE no le gusta mezclar cosas locales y externas y observa la IP.

De todos modos, espero que esto pueda ser útil para cualquiera que tenga el mismo problema.

Si tienes una solución para resolver el problema "real" configurando IE, házmelo saber:)

Salud,

 6
Author: EldredB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-05 16:50:59

Tuve este problema en Windows7/IE11 después de aplicar un parche de seguridad. Para Windows10 / Edge es la misma historia.

Como este es un websocket local (ws://localhost), debe agregar ws:\\localhost\ a las configuraciones de Internet Explore (Herramientas > Opciones de Internet > Seguridad > Intranet local > Sitios > Avanzado).

Configuración de sitios de intranet local IE11

En Windows 10 / Microsoft Edge encontrará esta configuración en Panel de control > Internet Opcion.

UPDATE

La dirección de tu webapp ( https://test.dev.mydomain.net ) también debe añadirse a la zona de intranet local . Tenga en cuenta que en la imagen se debe agregar la dirección de la aplicación web.

 3
Author: lmiguelmh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-18 23:18:38

Me encontré con el error (aunque no dijo la parte SCRIPT5022, sino que solo informa "ScriptError"). Resolví el problema haciendo clic en "Sitios de confianza" y luego agregando la máquina que aloja el websocket remoto. Nota, para agregar a sitios de confianza,

  • Tuve que proporcionar la dirección sin la parte" ws:// " (como solo mymahcine.mydomain.com)

  • Tuve que desmarcar la casilla que dice "Requerir verificación del servidor https://" opción.

  • Después de que fui terminado de agregar el dominio, volví a marcar la casilla "Requerir verificación del servidor (https://). Recomendaría a todos que hicieran lo mismo. Desmarcar la casilla es solo una solución para agregar sitios que no comiencen con https (en mi caso, ws://)
 0
Author: NurAlDin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-13 18:50:33

El nombre de host/Dirección IP del cliente debe ser el mismo que el IP/Nombre de host del servidor que está escuchando, de lo contrario, obtendría el error anterior.

1) Asegúrese de si el nombre de host del servidor está configurado para escuchar en IP / localhost, etc. y si no especifica explícitamente el nombre de host ast server

2) utilice el mismo nombre de host en el cliente. Esto resolverá el problema. Funcionó para mí...

 0
Author: Lokesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-24 12:52:04

Tuve el mismo problema en el entorno de uno de mis clientes. Resultó que tenían una configuración de proxy que no permitía la conexión al extremo WebSocket directamente y no soportaba el protocolo WebSocket. La solución temporal fue deshabilitar el uso del proxy y todo comenzó a funcionar. La solución a largo plazo es editar la configuración del proxy (.archivo pac) para excluir la dirección del extremo WebSocket.

Para desactivar el proxy, vaya a: Internet Explorer Opciones > Pestaña Conexiones > Botón de configuración LAN > desmarcar la detección automática de la configuración.

Espero que esto ayude a alguien.

 0
Author: DoronG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-22 19:50:36

Los navegadores tienen una limitación websocket. Por ejemplo, Internet Explorer tiene un límite predeterminado de conexiones websocket establecido en 6 por nombre de encabezado de host. la misma limitación se establece para el componente WinForms WebBrowser.

La solución es agregar valores en la clave Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_WEBSOCKET_MAXCONNECTIONSPERSERVER en el registro. Simplemente agregue el valor DWORD con el nombre del ejecutable, por ejemplo iexplore.exe (o nombre del ejecutable de la aplicación si utiliza el componente del navegador web) y establezca el valor en el rango 2..128

La segunda opción para resolver SecurityException es crear varios subdominios.

 0
Author: Rudolf Dvoracek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-17 09:31:39