Mam serwer NodeJS uruchomiony na moim komputerze lokalnym w celach programistycznych. Domyślnie korzysta z portu 1337. (Próbowałem kilka innych portów, takich jak 8080, 1234, 9000, 9090, 65432 i in.).
Mogę z powodzeniem połączyć się z tym serwerem NodeJS z Chrome, Firefox i Opera. Ale kiedy próbuję połączyć się z Internet Explorerem 11, widzę „Ta strona nie może zostać wyświetlona” (patrz zdjęcie).
Próbowałem różnych „rozwiązań” i przeglądałem kilka pytań / odpowiedzi na tej stronie. Żaden z nich nie działał. Włącznie z:
- Próbowałem 127.0.0.1
- Wyłączyłem „Tryb chroniony” i „Tryb rozszerzonej ochrony”.
- Dodałem „localhost” do Strefy Intranetowej i Strefy zaufanej.
- Wyłączyłem „Przyjazne wiadomości HTTP”, mając nadzieję zobaczyć więcej szczegółów.
- Próbowałem użyć nazwy mojego komputera i nazwy DNS.
- Próbowałem utworzyć ręczny wpis w pliku hosts dla „localhost”, a nawet „thisismyfrigginpc” przy użyciu mojego adresu IPv4.
Jedyny sukces, jaki odniosłem, to uruchomienie serwera na porcie 80 ( http://localhost:80/
lub http://localhost
). Jednak nie mogę rozwijać się na porcie 80 z różnych powodów. Muszę przetestować mój kod na localhost + port (jakiś port, dowolny port inny niż 80 i 443).
Pytania i odpowiedzi, które nie pomagają:
- Dlaczego nie mogę odwiedzić http: // localhost przez IE?
- Chrome i Firefox mogą uzyskać dostęp do localhost; Internet Explorer 9 nie może. Czemu?
- Jak przetestować lokalne strony w Metro IE10?
- /programming/19268956/can-not-access-localhostport
Proszę pomóż!
BTW, z systemem Windows 7 Enterprise 64-bitowym. Wdrożenie korporacyjne, ale mam uprawnienia administratora. Konfiguracja sieci jest dość standardowym DHCP bez NAT i proxy.
AKTUALIZACJA
Zgodnie z zaleceniem @codenoire zainstalowałem Fiddler, aby zobaczyć żądanie / odpowiedź. Poniżej znajdują się surowe żądania i odpowiedzi od IE-to-Fiddler-to-server-to-Fiddler:
Żądanie
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
Odpowiedź
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>
Wynik
Aktualizacja 17.01.2014
Testowałem ten scenariusz na „czystych” niekorporacyjnych instalacjach Windows 7 z IE 11. Wyniki są identyczne z moimi stałymi obserwacjami. Oznacza to, że każdą konfigurację wykonaną przez obraz korporacyjny systemu Windows można wyeliminować jako przyczynę. Ponadto konfiguracja sieci jest dość „waniliowa”.
Aktualizacja 21.01.2014
Próbowałem pomysłów „emulacji” programu Internet Explorer. Utworzyłem klucz „iexplorer.exe” jako wartości DWORD i QWORD (indywidualnie) z wartościami 8000, 8001, 9000, 9001, 10000, and 10001
. Po każdym zrestartowano i ponownie przetestowano. Wszystkie te próby dały takie same wyniki. Nawiasem mówiąc, musimy przetestować ten kod w IE11. Różne kody zgodności i triki tak naprawdę nie pomagają nam na dłuższą metę.
Aktualizacja 22.01.2014
Uruchomiłem serwer Apache XAMPP na porcie 1337. IE łączy się z nim dobrze. W odpowiedzi NodeJS jest coś, czego IE nie lubi, a inne przeglądarki wydają się dobrze obsługiwać. Będziemy badać nasz kod NodeJS, aby zobaczyć, co dokładnie dzieje się w nagłówkach / treści, aby sprawdzić, czy coś jest nie w porządku.
Aktualizacja 27.01.2014: Rozwiązanie
Chciałem tylko udokumentować wyniki. Oryginalna odpowiedź zawierała Content-Type: text/html;charset=utf-8
i na podstawie poprawnej odpowiedzi powinna być: Content-Type: text/html; charset=utf-8
ze spacją między typem a zestawem znaków.
Oto wyniki:
Surowa odpowiedź:
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>
Dzięki @harrymc za odkrycie odpowiedzi.
źródło
Odpowiedzi:
Artykuł WWW3 Ustawienie parametru zestawu znaków HTTP określa:
To definiuje się
Content-Type
jako pustecharset
.Wiem, że już się dowiedziałeś, że to rzeczywiście jest problem, więc źródłem problemu jest bardzo niewyobrażalne programowanie przez Microsoft lub jakiegoś pośrednika proxy.
źródło
Prawdopodobnie występuje problem w ustawieniach przeglądarki IE.
Najłatwiejszym sposobem na rozwiązanie tego problemu jest otwarcie opcji internetowych, przejście do zakładki zaawansowane i kliknięcie „Resetuj ustawienia Internet Explorera”. Upewnij się, że to wybierasz, a nie „Resetuj ustawienia zaawansowane”, ponieważ to nie obejmuje WSZYSTKICH ustawień.
Jeśli to nie zadziała, spróbuj także nawigować przy użyciu 127.0.0.1 zamiast localhost. Prawdopodobnie nie rozwiąże to problemu, ale może czasem spowodować problem.
Edycja: Chciałem dodać, że może to być problem z IE11. Wiem, że mieliśmy z tym wiele problemów ze zgodnością. Jeśli nie chcesz przywracać wersji IE10 i spróbować, zawsze możesz emulować z rejestru:
Pod
HKLM\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\
utworzysz klucz o nazwie:
i w nim utwórz wartość DWORD:
o wartości jednego z poniższych:
Odnieśliśmy największy sukces z 10001.
źródło
Sprawdź ustawienia proxy. Ponieważ jesteś w sieci firmowej, ktoś może mieć nieodpowiednią politykę proxy wrzuconą do twojej IE (która niekoniecznie będzie dublować się w innych przeglądarkach).
źródło
Wprowadzam te zmiany i wszystko działa dobrze w systemie Windows 10 64 bity.
źródło