„Nieprawidłowy nagłówek hosta” podczas uruchamiania serwera deweloperskiego Angular / CLI c9.io


88

Bieżące polecenie: ng serve --host --public $IP:$PORT

Wyniki na mojej stronie:

Nieprawidłowy nagłówek hosta


jest taki sam jak wyżej ... ten sam wynik
Olejs

Odpowiedzi:


109

--disable-host-checkFlag działa dobrze, jeśli trzeba uruchomić z Cloud9.

Używam następującego polecenia:

ng serve --open --host $IP --port $PORT --disable-host-check

Będzie działać, ale jeśli użyjesz --disable-host-check, otrzymasz ostrzeżenie w konsoli. WARNING: Running a server with --disable-host-check is a security risk. See medium.com/webpack/ ... aby uzyskać więcej informacji.
Krishnadas PC

1
ta opcja nie jest już dostępna
edi


19

Zobacz ten numer

Edytuj następujący wiersz w node_modules/webpack-dev-server/lib/Server.js(wiersz 425), zmień na:

return true;

Używam Cloud9 IDE następnie uruchomić: ng serve --port 8080 --host 0.0.0.0. Teraz działa dobrze.


27
Możesz uruchomić bez edycji kodu, dołączając --disableHostCheck true ng serv --host 0.0.0.0 --port 8080 --disableHostCheck true
tarn

3
zmień następujący wiersz w node_modules / webpack-dev-server / lib / Server.js: if (this.disableHostCheck) return true; zmień, aby zwrócić prawdę;
rakesh kashyap

Zobacz ten problem z Angular CLI GitHub dotyczący potencjalnych zagrożeń dla disableHostCheck, aby być świadomym tego, co robisz.
jmq

Odpowiedź Adetiloye jest znacznie lepsza
Matthew Dolman

3
Biegng serve --host 0.0.0.0 --disable-host-check
Ubaid Azad

15

To działa dla mnie:

ngrok http --host-header=rewrite PORT

na przykład :

ngrok http --host-header=rewrite 4200

Nie jest to odpowiedź, której potrzebował OP, ale i tak dziękuję za jej dodanie. Działa w przypadku tunelowania ngrok bez zmiany ustawień projektu.
LuizLoyola

13

W moim przypadku używam mojej nazwy hosta do aktualizacji pliku / etc / hosts.

vi /etc/hosts

i dodaj ostatnią linię swojej nazwy hosta.

127.0.0.1 myHostName.com

podłączyć mój serwer,

ng serve -o

Wystąpił błąd podczas łączenia się z myHostName.com:4200 .

więc zrobiłem to,

ng serve --host 0.0.0.0 --disableHostCheck true

Ponowne łączenie się z myHostName.com:4200 :)


1
to działa dla mnie ng serv --host 0.0.0.0 --disableHostCheck true. dziękuję @CookAtRice
Vinay Pandya

12

Musisz uruchomić następujące:

ng serve --port 8080 --publicHost 123.34.56.78 // your server ip or host name.

Pracuje dla mnie.


ng służyć - port 8080 --publicHost 0.0.0.0
Nitin.

12

W angular.json dodaj następujące elementy w obszarze architekt -> służyć -> opcje

"disableHostCheck": true

Mam odpowiedź na tej stronie z problemem Github


1
Chcę tylko zaznaczyć, że rozwiązuje to problem z działaniem lokalnie na komputerze. Nie jestem pewien, czy to rozwiązuje to dla Cloud9 zgodnie z oryginalnym pytaniem OP powyżej.
Tom Doe

To właściwe, czyste rozwiązanie, jeśli chcesz je włączać na każdym ng serve(i prawdopodobnie chcesz to
robić

8

U mnie działa poniższe polecenie.

ng serve --host 0.0.0.0 --port 8080  --public ipAddress

1
To działa. Ale gdzie mogę znaleźć wyjaśnienie dotyczące opcji „--publiczne” w Internecie? Dowiedziałem się tylko o opcji „--public-host”
niaomingjian

6

Napotkałem ten sam błąd po wdrożeniu mojej aplikacji kątowej na instancji AWS EC2 z obrazem bitnami. Następnie uruchomiłem aplikację za pomocą poniższego polecenia i działało dobrze.

ng serve --host 0.0.0.0 --port 8080 --disableHostCheck true

6

Użyj poniższego polecenia, które działa dla mnie dla Angular CLI: 6.0.7

ng serve --host 0.0.0.0 --port 8080 --disableHostCheck

4

Testowane na poniższej wersji Angulara i serwera Amazon.

Angular CLI: 6.0.8
Node: 8.11.3
OS: linux x64
Angular: 5.2.8

Opcje polecenia ng zostały zmienione, teraz używaj configurationzamiast env. Polecenie, które działało dla mnie, to

 ng serve --configuration=dev  --port 4009 --host 0.0.0.0 --publicHost myhost.com

Nigdy nie używaj --disable-host-checkna serwerze publicznym. Angular ostrzeże Cię, jeśli tego użyjesz. Może działać, ale jest to poważny problem z bezpieczeństwem. Otrzymasz tę wiadomość, jeśli użyjesz tej flagi.

OSTRZEŻENIE: uruchomienie serwera z opcją --disable-host-check stanowi zagrożenie bezpieczeństwa. Więcej informacji można znaleźć pod adresem https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a .

Poświęć trochę czasu na przeczytanie tego artykułu, który warto przeczytać.


to działało dla mnie, ale konieczne było uwzględnienie dokładnej subdomeny używanej w przeglądarce dla hosta publicznego:ng serve --host 0.0.0.0 --public-host sub.myhost.com
Cel

3

Zostało to faktycznie rozwiązane w jednym z komentarzy wideo na youtube dzięki Mateuszowi Sawie

Przejdź tutaj, aby to sprawdzić.

- Określenie hosta w package.json już nie działa -

wystarczy zauważyć, że nie jest konieczne użycie polecenia, które zostało użyte w filmie, wystarczą poniższe instrukcje, aby aplikacja działała przy regularnym angular-cliprogramowaniu

najpierw musisz znaleźć hosty w folderze etc /

wpisz cd ..w konsoli, aż dotrzesz do katalogu głównego komputera z systemem Linux i zawsze sprawdzaj, lsco jest na liście

jeśli widzisz plik hosts , to jesteś we właściwej lokalizacji, a następnie użyjsudo vi hosts aby go edytować

dodaj wiersz poniżej wszystkich adresów IP „0.0.0.0 twoja przestrzeń robocza- nazwa_użytkownika.c9users.io ” (oczywiście bez cudzysłowów :-))

również w package.json zmień "start": "ng serv -H yourworkspace-yourusername.c9users.io "

następnie wystarczy przejść do folderu aplikacji i uruchomić aplikację w terminalu za pomocą npm start

sprawdziłem to przed chwilą i zadziałało


2

U mnie działa poniższe polecenie z najnowszą wersją Angular CLI.

ng serve --host 0.0.0.0 --public-host <workspace>-<username>.c9users.io

2

Poniżej oba rozwiązania będą działać. W linii poleceń:

ng serve --public --host yourip --port yourportnumber

ng serve --host 0.0.0.0 --port yourport --disableHostCheck true


2

ng serv --host 0.0.0.0 --port 1234 - public-host mydomain.com

To działa dla mnie.


1

Mam ten sam błąd. Opcja publiczna rozwiązała problem dla mnie jak poniżej:

ng serve --host 0.0.0.0 --port 8080 --live-reload-port 8081 --public $C9_HOSTNAME

1

dzięki za wszystkie obejścia, --disable-host-check działa dla mnie, ale nie rozumiem, dlaczego muszę używać tego obejścia, dlaczego nie mogę po prostu służyć jak każda inna nowa aplikacja.



0

Powinieneś po prostu zmienić 0.0.0.0 na lokalny adres IP, taki jak 192.168.1.42 i powinno działać.

ng serve --host 192.168.1.42

0

Chodzi o to, że masz dostęp tylko do linku, który podałeś w parametrze --public. W moim przypadku podałem adres IP jako publiczny i próbuję uzyskać do niego dostęp w domenie zarejestrowanej pod tym adresem IP. Ale ng wiąże go z jedynym hostem dostarczonym w --public.

Aby rozwiązać ten problem, dostarczany jeden parametr: disable-host-check. Pełne polecenie:ng serve --disable-host-check --host 0.0.0.0 --port 3100 --public x.x.x.x

Aby dowiedzieć się więcej, kliknij tutaj


0

Otrzymałem ten błąd podczas próby uzyskania dostępu do naszej aplikacji za pomocą localtunnelnarzędzia.

Sugestia @tarn (z komentarza do zaakceptowanej odpowiedzi) dodania --disableHostCheck truedo ng servepolecenia załatwiła sprawę .


0

Oto rozwiązanie, jeśli ktoś nadal tkwi invalid host header problemie:

Uruchomienie ng ejectspowoduje utworzenie webpack.config.js. Biegnij, npm installjeśli prosi. Dodaj poniżej "disableHostCheck":truedo devServer w webpack.config.js. Jak poniżej:

"devServer": {
    "historyApiFallback": true,
    "disableHostCheck" : true //<-- add this line
  }

Następnie w opcji package.jsonzmiany pliku startponiżej w ngten sposób

"start": "webpack-dev-server --host 0.0.0.0 --port YOURPORT --public YOURIP:YOURPORT"

Teraz uruchom kątownik z npm startpoleceniem. Otóż ​​to.


-1

Daj temu szansę

ng serve --host <private IP> --port <host port> --public-host <public IP>

-3

Zmień wiersz 425 w pliku „node_modules / webpack-dev-server / lib / Server.js” z false na true. to znaczy,

Przed: return false;

Zaktualizowano: powrót prawda;


Dodaj więcej opisu.
Mathews Sunny

nie należy dotykać dostawców węzłów
Pablo W.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.