Pregunta WebSocket en IE10 dando un SecurityError


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

Lo que estoy haciendo parece bastante directo:

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

Pero IE no le gusta:

SCRIPT5022: SecurityError 

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

Lo que me molesta es que si hago doble clic en el archivo en mi computadora local (por ejemplo, file: // ...) simplemente funciona. Peor aún: si uso violinista para monitorear el tráfico HTTP ... también funciona. Mientras que parece que no hay conexión en absoluto sin violín, como se detalla en las especificaciones de la API. (Vea abajo.)

A juzgar por espec de websocket, 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 ... Además: cuando reemplazo la dirección wss por otro servidor válido encontrado en un ejemplo en línea, funciona.

No sé si esto es relevante, pero la dirección IP de test.dev.mydomain.net es 10.14.x.x donde hello.dev.mydomain.net es 194.247.x.x. No sé si podría activar algún tipo de seguridad en IE solo ...

Una cosa más: tengo un certificado para * .dev.mydomain.net, IE no parece tener problemas con él. El script originalmente reside en un servidor llamado my.name.dev.mydomain.net, pero como lo estoy accediendo desde otra URL (recibí un redireccionamiento desde que pensamos que podría haber sido algún tipo de problema con la política de Same Origin), 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.


32
2018-02-27 14:14


origen


Respuestas:


Parece que IE arroja un SecurityError si estás 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.

intranet detection settings

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

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


38
2017-11-22 12:42



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

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

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

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

Aclamaciones,


5
2018-03-05 16:50



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

Como se trata de un websocket local (ws: // localhost) debes agregar ws:\\localhost\ a Internet Explore configuraciones (Herramientas> Opciones de Internet> Seguridad> Intranet local> Sitios> Avanzado).

IE11 local intranet sites configuration

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

ACTUALIZAR

La dirección de su aplicación web (https://test.dev.mydomain.net) debe ser agregado a la zona de intranet local también. Nota que en la imagen debe agregarse la dirección de la aplicación web.


4
2018-01-13 21:27



Encontré el error (aunque no decía la parte SCRIPT5022, sino que simplemente informaba "ScriptError"). Solucioné el problema haciendo clic en "Sitios de confianza" y luego agregué el equipo 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.

  • Cuando terminé de agregar el dominio, volví a marcar la casilla "Requerir verificación del servidor (https: //). Recomendaría a todos que hagan lo mismo. Quitar la marca del recuadro es solo una solución para agregar sitios que no comienzan con https (más bien ws: // en mi caso)

0
2018-05-12 17:36



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

1) Asegúrese de que el nombre de host del servidor esté configurado para escuchar en IP / localhost, etc. y no especifique explícitamente el servidor de nombres y servidores.

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


0
2018-02-24 12:52



Tuve el mismo problema en uno de los entornos de mi cliente. Resultó que tenían una configuración de proxy que no permitía la conexión al punto final WebSocket directamente y no era compatible con 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 punto final WebSocket.

Para deshabilitar el proxy, vaya a: Opciones de Internet Explorer> ficha Conexiones> botón Configuración de LAN> desmarcar Detectar configuraciones automáticamente.

Espero que esto ayude a alguien.


0
2018-03-22 19:50



Los navegadores tienen una limitación de websocket. Por ejemplo, Internet Explorer tiene un límite predeterminado de conexiones de 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 debajo de la tecla 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 archivo ejecutable, por ejemplo, iexplore.exe (o el nombre de su aplicación ejecutable si usa el componente del navegador web) y establezca el valor del rango 2..128

La segunda opción para resolver SecurityException es crear múltiples subdominios.


0
2017-07-17 09:31