WebSocket sur IE10 donnant une erreur de titrisation

je suis en train de développer un site web sous IE10 (sous Windows 8), en utilisant des WebSockets en JavaScript. Il fonctionne très bien sous Firefox 18 et Chrome 25, mais sur IE10 j'obtiens une erreur de sécurité quand j'établis la connexion.

ce que je fais semble assez direct :

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

Mais IE ne l'aime pas :

SCRIPT5022: SecurityError 

Le script est sur "https://test.dev.mydomain.net" (pas l'adresse réelle évidemment).

Ce qui me dérange, c'est que si je double-clique le fichier sur mon ordinateur local (par exemple fichier://...) il fonctionne, tout simplement. Pire encore: si j'utilise fiddler pour surveiller le trafic HTTP... fonctionne aussi. Alors qu'il ne semble pas y avoir de connexion du tout sans fiddler, comme détaillé dans les spécifications de L'API. (Voir ci-dessous.)

à en Juger par websocket spec, l'exception doit également apparaître sur Chrome/Firefox... mais il ne le fait pas. Je doute donc qu'il ait quoi que ce soit à voir avec HTTP/HTTPS. En tout case, j'utilise une socket wsS sur une page httpS... De plus: lorsque je remplace l'adresse wss par un autre serveur valide trouvé sur un exemple en ligne, cela fonctionne.

Je ne sais pas si c'est pertinent, mais L'IP de test.dev.mydomain.net est 10.14.x.x où hello.dev.mydomain.net is 194.247.x.x. Je ne sais pas si ça pourrait déclencher une sorte de sécurité sur IE seulement...

autre chose: j'ai un certificat pour *.dev.mydomain.net, IE ne semble pas avoir de problèmes avec elle. Le script réside à l'origine sur un serveur appelé my.name.dev.mydomain.net, mais puisque je l'accède à partir d'une autre URL (j'ai obtenu une redirection depuis que nous avons pensé que cela aurait pu être une sorte de même question de politique D'Origine), Je ne vois pas comment cela pourrait avoir de l'importance. Au moins j'espère qu'il ne le fait pas...

Toute idée est la bienvenue.

EDIT: ajouter les sites à la zone de confiance ne fonctionne pas non plus.

34
demandé sur Jari Keinänen 2013-02-27 18:14:30

7 réponses

il semble QU'IE lance une SecurityError si vous essayez d'ouvrir un websocket sur un local (intranet) domaine. Pour surmonter cela, vous pouvez désactiver l'algorithme automatique D'IE pour reconnaître les sites locaux. Cela peut être fait en Tools > Internet Options > Security > Local Intranet > Sites.

intranet detection settings

décochez toutes les cases à cocher (ou seulement une case en particulier, si vous savez comment exactement votre domaine a fini dans les cases intranet).

notez QU'IE utilise (entre autres choses) ses paramètres de proxy pour déterminez les sites locaux: si votre domaine est classé comme exclu du proxying dans les paramètres proxy, alors il sera probablement traité comme intranet one. C'est pourquoi WebSockets fonctionne si vous activez Fiddler: il modifie les paramètres de proxy IE et donc la liste des sites intranet change.

40
répondu Georgii Ivankin 2013-11-22 12:42:17

Eh bien, ma question n'a pas eu beaucoup de succès, alors je vais poster le "contournement" que j'ai trouvé.

j'ai eu une autre adresse pour le site web, en 194.247.. trop. Cela, comme par magie, résolu. Je suppose que IE n'aime pas mélanger des choses locales et externes et regarde L'IP.

de toute façon, j'espère que cela pourra être utile à tous ceux qui ont le même problème.

si vous avez une solution pour résoudre le" vrai " problème en configurant IE, faites-le moi savoir :)

Cheers,

6
répondu EldredB 2013-03-05 16:50:59

j'ai eu ce problème dans windows 7/IE11 après l'application d'un correctif de sécurité. Pour Windows10 / Edge est la même histoire.

comme il s'agit d'un websocket local (ws://localhost), vous devez ajouter ws:\localhost\ pour Internet Explorer configurations (Outils > Options Internet > Sécurité > Intranet Local > Sites > Avancé).

IE11 local intranet sites configuration

Windows 10 / Microsoft Edge vous trouverez cette configuration dans le Panneau de Contrôle > Options Internet.

UPDATE

L'adresse de votre webapp (https://test.dev.mydomain.net) doit être ajouté à l' intranet local zone trop. Remarque: que dans l'image l'adresse webapp doit être ajoutée.

3
répondu lmiguelmh 2017-01-18 23:18:38

j'ai rencontré l'erreur (Bien qu'elle n'ait pas dit la partie SCRIPT5022, elle ne fait que rapporter "ScriptError"). J'ai contourné le problème en cliquant sur "Sites de confiance" et en ajoutant la machine hébergeant le websocket distant. Remarque, d'ajouter des sites de confiance,

  • j'ai dû fournir l'adresse sans la partie" ws:// " (comme juste mymahcine.mydomain.com)

  • j'ai dû décocher la case "Exiger un serveur sécurisé https:// " option.

  • après avoir ajouté le domaine, j'ai re-coché la case "Require server verification (https://). Je recommande à tous de faire de même. Décompresser la boîte n'est qu'une solution pour ajouter des sites qui ne commencent pas par https (plutôt ws:// dans mon cas)
0
répondu NurAlDin 2015-05-13 18:50:33

l'adresse IP/nom d'hôte du client doit être la même que l'adresse IP/nom D'hôte du serveur qui est à l'écoute, sinon vous obtiendriez l'erreur ci-dessus.

1) Assurez-vous que le nom d'hôte du serveur est configuré pour écouter sur IP/localhost etc et que le nom d'hôte du serveur ast n'est pas spécifié explicitement

2) Utilisez le même nom d'hôte dans le client. Cela permettra de résoudre le problème. Il a travaillé pour moi...

0
répondu Lokesh 2016-02-24 12:52:04

j'ai eu le même problème dans l'environnement d'un de mes clients. Il s'est avéré qu'ils avaient une configuration proxy qui ne permettait pas la connexion directe au terminal WebSocket et ne supportait pas le protocole WebSocket. La solution temporaire était de désactiver l'utilisation du proxy et tout a commencé à fonctionner. La solution à long terme est d'éditer la configuration du proxy (.pac file) pour exclure l'adresse du paramètre WebSocket.

Pour désactiver le proxy: Internet Options de l'Explorateur > onglet Connexions > bouton Paramètres du réseau local > décochez automatiquement les paramètres.

Espérons que cela aide quelqu'un.

0
répondu DoronG 2018-03-22 19:50:36

les navigateurs ont une limitation websocket. Par exemple, Internet Explorer a une limite par défaut de connexions websocket fixée à 6 par nom d'en-tête de l'hôte. la même limitation est définie pour le composant WinForms WebBrowser.

la solution est d'ajouter des valeurs sous l'ordinateur clé \HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_WEBSOCKET_MAXCONNECTIONSPERSERVER dans le registre. Il suffit d'ajouter la valeur DWORD avec le nom exécutable , par exemple iexplore.exe (ou le nom de l'exécutable de votre application si vous utilisez le composant du navigateur Web) et définissez la valeur à partir de la plage 2..128

Deuxième option comment résoudre SecurityException est de créer plusieurs sous-domaines.

0
répondu Rudolf Dvoracek 2018-07-17 09:31:39