IE funktioniert nicht mit localhost + port

25

Ich habe einen NodeJS-Server, der zu Entwicklungszwecken auf meinem lokalen Computer ausgeführt wird. Standardmäßig wird Port 1337 verwendet. (Ich habe einige andere Ports ausprobiert, z. B. 8080, 1234, 9000, 9090, 65432 usw.).

Ich kann erfolgreich eine Verbindung zu diesem NodeJS-Server von Chrome, Firefox und Opera herstellen. Wenn ich jedoch versuche, eine Verbindung mit Internet Explorer 11 herzustellen, wird "Diese Seite kann nicht angezeigt werden" (siehe Abbildung).

Bildbeschreibung hier eingeben

Ich habe eine Vielzahl von "Lösungen" ausprobiert und auf dieser Website mehrere Fragen / Antworten angezeigt. Keiner von ihnen hat funktioniert. Einschließlich:

  • Ich habe 127.0.0.1 ausprobiert
  • Ich habe den "Geschützten Modus" und den "Erweiterten Schutzmodus" deaktiviert.
  • Ich habe "localhost" zur Intranetzone und zur vertrauenswürdigen Zone hinzugefügt.
  • Ich habe "Freundliche HTTP-Nachrichten" deaktiviert, um mehr Details zu sehen.
  • Ich habe versucht, meinen Computernamen und DNS-Namen zu verwenden.
  • Ich habe versucht, einen manuellen Eintrag in meiner Hosts-Datei für "localhost" und sogar "thisismyfrigginpc" mithilfe meiner IPv4-Adresse zu erstellen.

Der einzige Erfolg, den ich hatte, ist, wenn der Server an Port 80 ( http://localhost:80/oder http://localhost) ausgeführt wird. Ich kann jedoch aus verschiedenen Gründen nicht auf Port 80 entwickeln. Ich muss meinen Code auf localhost + port testen (irgendein Port, irgendein anderer als 80 und 443).

Fragen und Antworten, die nicht helfen:

Bitte um Hilfe!

Übrigens, mit Windows 7 Enterprise 64-Bit. Unternehmensbereitstellung, aber ich habe Administratorrechte. Die Netzwerkkonfiguration ist ein Standard-DHCP ohne NAT und ohne Proxy.

AKTUALISIEREN

Auf Empfehlung von @codenoire habe ich Fiddler installiert, um die Anfrage / Antwort zu sehen. Nachfolgend finden Sie die unformatierte Anfrage und Antwort von IE-to-Fiddler-to-Server-to-Fiddler:

Anfordern

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

Antwort

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>

Ergebnis

Bildbeschreibung hier eingeben

Update 17.01.2014

Ich habe dieses Szenario auf "sauberen" Windows 7-Installationen von Drittanbietern mit IE 11 getestet. Die Ergebnisse stimmen mit meinen bisherigen Beobachtungen überein. Dies bedeutet, dass jede Konfiguration, die von einem Unternehmensimage von Windows vorgenommen wird, als Ursache beseitigt werden kann. Auch die Netzwerkkonfiguration ist ziemlich "Vanille".

Update vom 21.01.2014

Ich habe versucht, die Internet Explorer "Emulation" -Ideen. Ich habe den Schlüssel "iexplorer.exe" als DWORD- und QWORD-Wert (einzeln) mit den Werten erstellt 8000, 8001, 9000, 9001, 10000, and 10001. Nach jedem Neustart und erneut getestet. Alle diese Versuche führten zu den gleichen Ergebnissen. Abgesehen davon müssen wir diesen Code in IE11 testen. Die verschiedenen Kompatibilitätscodes und Tricks helfen uns auf lange Sicht nicht.

Update 22.01.2014

Hat einen XAMPP-Apache-Server an Port 1337 gestartet. IE stellt eine Verbindung zu ihm her. Es gibt also etwas an der NodeJS-Antwort, das der IE nicht mag, und die anderen Browser scheinen gut damit umzugehen. Wir werden unseren NodeJS-Code untersuchen, um herauszufinden, was genau in den Headern / Inhalten passiert, um festzustellen, ob etwas nicht in Ordnung ist.

Update 27.01.2014: Auflösung

Ich wollte nur die Ergebnisse dokumentieren. Die ursprüngliche Antwort enthielt Content-Type: text/html;charset=utf-8und basierend auf der richtigen Antwort sollte es sein: Content-Type: text/html; charset=utf-8mit einem Leerzeichen zwischen dem Typ und dem Zeichensatz.

Hier sind die Ergebnisse:

Bildbeschreibung hier eingeben

Rohe Antwort:

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>

Vielen Dank an @harrymc für die Aufdeckung der Antwort.

mawcsco
quelle
1
Vote Up für Screenshots.
Oxymoron
Machen Sie zunächst die meisten von Ihnen ausgeführten Vorgänge rückgängig, insbesondere die Hinzufügung zur Intranetzone. Wenn Sie es einer Zone hinzufügen möchten, verwenden Sie vertrauenswürdige Sites.
Frank Thomas
@FrankThomas Danke, dass du mich daran erinnert hast. Ich habe das ohne Erfolg versucht. Ich habe meine Frage bearbeitet, um das zu reflektieren.
mawcsco
Könntest du bitte deine Bind-Einstellungen posten?
Vanadis
@ Vanadis Bind-Einstellungen? Könntest Du das erläutern?
Mawcsco

Antworten:

9

Der WWW3-Artikel Festlegen des HTTP-Zeichensatzparameters gibt Folgendes an:

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

Dies definiert Content-Typeals ein Leerzeichen vor charset.

Ich weiß, dass Sie bereits herausgefunden haben, dass dies tatsächlich das Problem ist. Die Ursache des Problems ist eine sehr einfallslose Programmierung durch Microsoft oder einen Middle-Man-Proxy.

Harrymc
quelle
1) Die Verwendung des Maschinennamens behebt die Situation nicht. 2) Ich habe bereits Fiddler verwendet und die Ergebnisse in meinen Beitrag aufgenommen. 3) Wireshark + pcap kann nicht auf localhost erfassen. Ich habe RawCap + Wireshark verwendet und die Ergebnisse waren mit denen von Fiddler identisch.
Mawcsco
Mit identisch meine ich, dass die dekodierten Pakete ziemlich gleich aussahen.
Mawcsco
Ich habe Fiddler nicht "aufgegeben". Es funktioniert einwandfrei und ich erhalte die gleichen "Ergebnisse": Chrome, Firefox, Opera verbinden einwandfrei, IE nicht. Ich habe die rohe, decodierte Anforderungsantwort gepostet und alles sieht normal / korrekt aus und dennoch zeigt der IE die Seite nicht an.
Mawcsco
Welcher Rat ist das? Ich habe den Computernamen bereits ausprobiert. Mein Beitrag sagt das. Das Fiddler Root-Zertifikat wird nur zum Herstellen von SSL-Verbindungen benötigt. Ich brauche das nicht (und ich weiß nicht, wie das überhaupt helfen würde). Ich habe Wireshark bereits ausprobiert, es enthüllt nichts Neues. Fiddler hat erfolgreich gezeigt, dass die Serveranfrage / -antwort in Ordnung ist, was ich daraus geschlossen habe, dass jeder andere Browser einwandfrei funktioniert. NUR IE verhält sich anders.
Mawcsco
Ja, genau so fühlt es sich an. Ich bin mit meinem Latein am Ende. UAC ist bereits deaktiviert, keine Hilfe da. Ich beschäftige mich mit dem Thema Zeichensatz, aber ich habe keine Ahnung, wie ich damit umgehen soll. Ich untersuche es.
Mawcsco
3

Möglicherweise liegt ein Problem in Ihren Einstellungen für den Internet Explorer vor.

Die einfachste Möglichkeit, dies zu beheben, besteht darin, die Internetoptionen zu öffnen, zur Registerkarte "Erweitert" zu wechseln und auf "Internet Explorer-Einstellungen zurücksetzen" zu klicken. Stellen Sie sicher, dass Sie dies auswählen und nicht "Erweiterte Einstellungen zurücksetzen", da dies nicht ALLE Einstellungen umfasst.

Wenn dies nicht funktioniert, versuchen Sie bitte auch, mit 127.0.0.1 anstelle von localhost zu navigieren. Dies wird das Problem wahrscheinlich nicht lösen, kann aber manchmal zu einem Problem führen.

Edit: Ich wollte hinzufügen, dass dies ein Problem mit IE11 sein könnte. Ich weiß, dass wir viele Kompatibilitätsprobleme damit hatten. Wenn Sie kein Rollback auf IE10 durchführen und dies versuchen möchten, können Sie immer Emulate aus der Registrierung ausführen:

Unter

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

Sie erstellen einen Schlüssel mit dem Namen:

FEATURE_BROWSER_EMULATION

Erstellen Sie darin einen DWORD-Wert:

iexplorer.exe

mit einem Wert von einem der folgenden Werte:

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

Wir haben mit 10001 den größten Erfolg gehabt.

WreithKassan
quelle
Ich habe dies bereits auf mehreren Rechnern getestet, von denen eine Handvoll eine "frische" Installation von Windows und IE hatte.
Mawcsco
Haben Sie IE mit deaktivierten Addons ausgeführt? Ich weiß, dass Sie gesagt haben, dass es eine Neuinstallation war, aber es kommt manchmal mit Blähungen vorverpackt.
WreithKassan
Wieder eine Neuinstallation von Windows und IE. Keine Add-Ons installiert.
mawcsco
Mein ursprünglicher Beitrag besagt bereits, dass ich 127.0.0.1 ausprobiert habe. Ich werde den Trick "Emulation" versuchen.
Mawcsco
Ok, keiner der Browser-Emulationswerte in dieser Antwort funktioniert.
mawcsco
1

Überprüfen Sie Ihre Proxy-Einstellungen. Da Sie sich in einem Unternehmensnetzwerk befinden, hat möglicherweise jemand eine unzureichende Proxy-Richtlinie in Ihrem IE (die nicht unbedingt für die anderen Browser gespiegelt wird).

Xavier J
quelle
Hier ist definitiv kein Proxy los. Wir benutzen nicht einmal NAT. Meine Frage wurde entsprechend aktualisiert.
Mawcsco
Das heißt, schließen Sie Ihren Browser an Fiddler an und sehen Sie, was möglicherweise unter der Haube vor sich geht. Probieren Sie einige Websites aus, die funktionieren, und versuchen Sie es dann mit localhost, und beobachten Sie die Verkehrsanzeige. Am besten kann ich empfehlen. fiddler2.com
Xavier J
Also führt Fiddler einen Proxy ein. Jetzt sehe ich im IE: "Der Proxy-Server antwortet nicht." Die Anfrage / Antwort in Fiddler zeigt jedoch, dass alles in Ordnung ist. Der Server hat mit den erwarteten Headern und HTML-Inhalten geantwortet. Aber das sehe ich im IE nicht.
Mawcsco
-1

Ich nehme diese Änderungen vor und alle funktionieren einwandfrei unter Windows 10 64-Bit.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

user728452
quelle
1
Ich glaube nicht, dass dies das OPs-Problem beheben wird. Es wurde bestätigt, dass es sich um eine fehlerhafte HTTP-Antwort vom Typ Cntent handelt.
DavidPostill