web-dev-qa-db-fra.com

IE ne fonctionne pas avec localhost + port

J'ai un serveur NodeJS en cours d'exécution sur ma machine locale à des fins de développement. Par défaut, il utilise le port 1337. (J'ai essayé une poignée d'autres ports tels que 8080, 1234, 9000, 9090, 65432 et autres).

Je peux réussir à me connecter à ce serveur NodeJS depuis Chrome, Firefox et Opera. Mais lorsque j'essaie de me connecter à Internet Explorer 11, je vois "Cette page ne peut pas être affichée" (voir l'image).

enter image description here

J'ai essayé diverses "solutions" et consulté plusieurs questions/réponses sur ce site. Aucun d'entre eux n'a fonctionné. Comprenant:

  • J'ai essayé 127.0.0.1
  • J'ai désactivé le "Mode protégé" et le "Mode de protection renforcée".
  • J'ai ajouté "localhost" à la zone intranet et à la zone de confiance.
  • J'ai désactivé les "messages HTTP conviviaux" dans l'espoir de voir plus de détails.
  • J'ai essayé d'utiliser mon nom d'ordinateur et mon nom DNS.
  • J'ai essayé de créer une entrée manuelle dans mon fichier hosts pour "localhost" et même "thisismyfrigginpc" en utilisant mon adresse IPv4.

Le seul succès que j'ai eu est lorsque le serveur est exécuté sur le port 80 (http://localhost:80/ ou http://localhost). Cependant, je ne peux pas développer sur le port 80 pour diverses raisons. Je dois tester mon code sur le port localhost + (un port quelconque, un port autre que 80 et 443).

Questions et réponses qui ne vous aident pas:

Aide s'il vous plaît!

BTW, exécutant Windows 7 Entreprise 64 bits. Déploiement en entreprise, mais j'ai des droits d'administrateur. La configuration réseau est plutôt standard avec DHCP sans NAT et sans proxy.

UPDATE

Sur recommandation de @codenoire, j'ai installé Fiddler pour voir la requête/réponse. Vous trouverez ci-dessous la requête et la réponse brutes d'IE à Fiddler à serveur à Fiddler:

Demande

GET http://localhost:1337/common/test.html HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: localhost:1337

Réponse

HTTP/1.1 200 OK
Set-Cookie: _session=WRuVLmrXMtjnDJY8;expires=Wed, 15 Jan 2014 23:19:16 GMT;path=/;domain=;httponly
Content-Type: text/html;charset=utf-8
Last-Modified: 1389818856000
Date: Wed, 15 Jan 2014 22:19:16 GMT
Connection: keep-alive
Content-Length: 128

<html>
<head>
    <title>Connectivity Test Page</title>
</head>

<body>

<h1>This is a test page.</h1>

</body>

</html>

Résultat

enter image description here

Mise à jour du 2014-01-17

J'ai testé ce scénario sur des installations "propres" de Windows 7 non professionnelles avec IE 11. Les résultats sont identiques à ceux de mes observations permanentes. Cela signifie que toute configuration faite par une image d'entreprise de Windows peut être éliminée. En outre, la configuration du réseau est assez "Vanilla".

Mise à jour du 2014-01-21

J'ai essayé les idées "d'émulation" d'Internet Explorer. J'ai créé une clé, "iexplorer.exe" sous forme de valeurs DWORD et QWORD (individuellement) avec les valeurs 8000, 8001, 9000, 9001, 10000, and 10001. Après chaque, redémarré et testé à nouveau. Toutes ces tentatives ont produit les mêmes résultats. En passant, nous devons tester ce code dans IE11. Les divers codes et astuces de compatibilité ne nous aident pas vraiment à long terme.

Mise à jour du 2014-01-22

Vous avez lancé un serveur XAMPP Apache sur le port 1337. IE se connecte très bien. Donc, il y a quelque chose dans la réponse de NodeJS que IE n'aime pas et les autres navigateurs semblent bien gérer. Nous étudierons notre code NodeJS pour voir ce qui se passe exactement dans les en-têtes/le contenu et voir si quelque chose ne correspond pas.

Mise à jour 2014-01-27: Résolution

Je voulais juste documenter les résultats. La réponse d'origine incluait Content-Type: text/html;charset=utf-8 et, en fonction de la réponse correcte, elle devrait être: Content-Type: text/html; charset=utf-8 avec un espace entre le type et le jeu de caractères.

Voici les résultats:

enter image description here

Réponse brute:

HTTP/1.1 200 OK
Set-Cookie: _session=EshWS7xDnCeV9pXS;expires=Mon, 27 Jan 2014 18:49:21 GMT;path=/;domain=;httponly
Date: Mon, 27 Jan 2014 17:49:21 GMT
Last-Modified: 1389818856000
Content-Type: text/html; charset=UTF-8
Content-Length: 128
Connection: keep-alive

<html>
<head>
    <title>Connectivity Test Page</title>
</head>

<body>

<h1>This is a test page.</h1>

</body>

</html>

Merci à @harrymc d'avoir découvert la réponse.

24
mawcsco

L'article WWW3 La définition du paramètre charset HTTP spécifie:

Content-Type: text/html; charset=utf-8

Ceci définit Content-Type comme ayant un blanc avant charset.

Je sais que vous avez déjà découvert qu'il s'agissait bien du problème. La source du problème provient donc d'une programmation très peu imaginative de Microsoft ou d'un proxy intermédiaire.

9
harrymc

Il y a probablement un problème dans vos paramètres pour IE.

Le moyen le plus simple de résoudre ce problème consiste à ouvrir les Options Internet, à l'onglet Avancé, puis à cliquer sur "Réinitialiser les paramètres d'Internet Explorer". Assurez-vous de choisir cela et non "Réinitialiser les paramètres avancés", car celui-ci n'englobe pas TOUS les paramètres.

Si cela ne fonctionne pas, essayez également de naviguer en utilisant 127.0.0.1 au lieu de localhost. Ce n'est pas susceptible de résoudre le problème, mais peut parfois créer un problème.

Edit: Je voulais ajouter que cela pourrait être un problème avec IE11. Je sais que nous avons eu beaucoup de problèmes de compatibilité avec cela. Si vous ne voulez pas revenir à IE10 et essayer cela, vous pouvez toujours émuler à partir du registre:

Sous

HKLM\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\

vous allez créer une clé appelée:

FEATURE_BROWSER_EMULATION

et à l'intérieur, créez une valeur DWORD:

iexplorer.exe

avec une valeur de l'une des valeurs suivantes:

 IE8 - 8000 (or 8001)
 IE9 - 9000 (or 9001)
 IE10 - 10000 (or 10001)

Nous avons eu le plus de succès avec 10001.

2
WreithKassan

Vérifiez vos paramètres de proxy. Étant donné que vous êtes sur un réseau d'entreprise, une stratégie de proxy inappropriée peut être introduite dans votre IE (elle ne reflétera pas nécessairement les autres navigateurs).

1
Xavier J