«Недопустимый заголовок хоста» при запуске сервера разработки Angular / cli c9.io


88

Текущая команда: ng serve --host --public $IP:$PORT

Результаты на моем сайте:

Недействительный заголовок хоста


то же самое, что и выше ... тот же результат
Olejs

Ответы:


109

--disable-host-checkФлаг работает отлично , если вам нужно работать с Cloud9.

Я использую следующую команду:

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

Он будет работать, но если вы воспользуетесь им, --disable-host-checkвы получите предупреждение в консоли. WARNING: Running a server with --disable-host-check is a security risk. See medium.com/webpack/… для получения дополнительной информации.
Krishnadas PC

1
эта опция больше недоступна
edi


19

См. Эту проблему

Отредактируйте следующую строку в node_modules/webpack-dev-server/lib/Server.js(строка 425), изменив ее на:

return true;

Я использую Cloud9 IDE затем запустите: ng serve --port 8080 --host 0.0.0.0. Теперь работает нормально.


27
Вы можете работать без редактирования коды, Append --disableHostCheck истинных нг служить --host 0.0.0.0 --port 8080 --disableHostCheck истинного
Тарн

3
измените следующую строку в node_modules / webpack-dev-server / lib / Server.js: if (this.disableHostCheck) return true; изменить, чтобы вернуть истину;
rakesh kashyap

См. Эту проблему Angular CLI GitHub относительно потенциальных рисков disableHostCheck, просто чтобы знать, что вы делаете.
jmq

Ответ Адетилой намного лучше
Мэтью Долман

3
Бегng serve --host 0.0.0.0 --disable-host-check
Убайд Азад

15

Это работает для меня:

ngrok http --host-header=rewrite PORT

например :

ngrok http --host-header=rewrite 4200

Не тот ответ, который нужен OP, но все равно спасибо за его добавление. Работает для туннелирования ngrok без изменения настроек проекта.
LuizLoyola

13

В моем случае я использую свое имя хоста для обновления файла / etc / hosts.

vi /etc/hosts

и добавьте свое имя хоста в последнюю строку.

127.0.0.1 myHostName.com

для подключения моего сервера,

ng serve -o

Произошла ошибка при подключении к myHostName.com:4200 .

Итак, мне это понравилось,

ng serve --host 0.0.0.0 --disableHostCheck true

Повторное подключение к myHostName.com:4200 :)


1
это сработало для меня ng serve --host 0.0.0.0 --disableHostCheck true. спасибо @CookAtRice
Vinay

12

Вам нужно выполнить следующее:

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

Работает на меня.


ng serve --port 8080 --publicHost 0.0.0.0
Нитин.

12

В angular.json добавьте следующее в разделе « Architect» -> «serve ->»

"disableHostCheck": true

Получил ответ с этой страницы проблемы Github


1
Просто хочу отметить, что это решает проблему локального запуска на машине. Я не уверен, решит ли он это для Cloud9 в соответствии с исходным вопросом OP выше.
Tom Doe

Это правильное чистое решение, если вы хотите включать его на каждом ng serve(и, вероятно, хотите, чтобы он
находился

8

Использование приведенной ниже команды работает для меня.

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

1
Оно работает. Но где я могу найти объяснение опции --public в Интернете? Я узнал только об опции '--public-host'
niaomingjian

6

Я столкнулся с такой же ошибкой после развертывания моего приложения angular на экземпляре AWS EC2 с изображением битнами. Затем я запустил свое приложение с помощью команды ниже, и оно сработало нормально.

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

6

Используйте команду ниже, работает для меня для Angular CLI: 6.0.7

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

4

Протестировано на приведенной ниже версии Angular и на сервере Amazon.

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

Параметры команды ng были изменены, теперь используйте configurationвместо env. Команда, которая сработала для меня,

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

Никогда не используйте --disable-host-checkна общедоступном сервере. Angular предупредит вас, если вы воспользуетесь этим. Это может работать, но это серьезная проблема безопасности. Вы получите это сообщение, если используете этот флаг.

ВНИМАНИЕ: запуск сервера с --disable-host-check представляет собой угрозу безопасности. См. Https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a для получения дополнительной информации.

Пожалуйста, найдите время, чтобы прочитать эту статью, которую стоит прочитать.


это сработало для меня, но необходимо было включить точный поддомен, используемый в браузере для общедоступного хоста:ng serve --host 0.0.0.0 --public-host sub.myhost.com
Cel

3

Это было фактически решено в одном из комментариев к видео на YouTube благодаря Матеушу Саве.

Зайдите сюда, чтобы проверить это.

- указание хоста в package.json больше не работает -

просто обратите внимание, что нет необходимости использовать команду, которая использовалась в видео, нижеприведенных инструкций достаточно, чтобы приложение работало с использованием обычной angular-cliразработки

сначала нужно найти хосты в папке etc /

введите cd ..в консоли, пока не дойдете до корня Linux-машины, и всегда проверяйте lsто, что указано

если вы видите файл hosts , значит, вы находитесь в нужном месте, а затем используйте его sudo vi hostsдля его редактирования

добавьте строку под всеми IP-адресами "0.0.0.0 yourworkspace-yourusername.c9users.io " (без кавычек, конечно :-))

также в package.json измените "start": "ng serve -H yourworkspace-yourusername.c9users.io "

тогда вам просто нужно перейти в папку приложения и запустить приложение в терминале с помощью npm start

проверил только сейчас и это сработало


2

Я использую команду ниже с последней версией Angular CLI.

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

2

Ниже будут работать оба решения. В командной строке:

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

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



1

У меня такая же ошибка. Публичный вариант решил проблему для меня, как показано ниже:

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

1

Спасибо за все обходные пути, --disable-host-check у меня работает, но я не понимаю, почему я должен использовать этот обходной путь, почему я не могу просто работать, как любое другое новое приложение.



0

Вам просто нужно изменить 0.0.0.0 на свой локальный IP-адрес, например 192.168.1.42, и он должен работать.

ng serve --host 192.168.1.42

0

Дело в том, что вы можете получить доступ только к той ссылке, которую указали в параметре --public. В моем случае я предоставил IP-адрес в --public и пытаюсь получить к нему доступ с помощью домена, который я зарегистрировал для этого IP. Но ng привязывает его к единственному хосту, указанному в --public.

Чтобы решить эту проблему, я поставляется еще один параметр: disable-host-check. Полная команда:ng serve --disable-host-check --host 0.0.0.0 --port 3100 --public x.x.x.x

Чтобы узнать больше, нажмите здесь


0

Я получал эту ошибку при попытке доступа к нашему приложению с помощью localtunnelутилиты.

Предложение @tarn (из комментария к принятому ответу) добавления --disableHostCheck trueк ng serveкоманде сработало.


0

Вот решение, если кто-то все еще застрял в invalid host headerпроблеме:

Запустите, ng ejectэто создаст файл webpack.config.js. Беги, npm installесли просит. Добавить ниже , "disableHostCheck":trueчтобы devServer в webpack.config.js. Как показано ниже:

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

Затем в опции package.jsonизменения файла startпод ngтаким

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

Теперь запустите angular с помощью npm startкоманды. Это оно.


-1

Дайте этому шанс

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.