“Недійсний заголовок хосту” під час запуску сервера розробки Angular / cli c9.io


84

Поточна команда: ng serve --host --public $IP:$PORT

Результати на моєму веб-сайті:

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


це те саме, що вище ... той самий результат
Олейс

Відповіді:


103

--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
Ви можете запустити без редагування коду, додавши --disableHostCheck true ng serve --host 0.0.0.0 --port 8080 --disableHostCheck true
tarn

3
змінити такий рядок у node_modules / webpack-dev-server / lib / Server.js: if (this.disableHostCheck) return true; змінити, щоб повернути 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 Pandya

11

Вам потрібно запустити наступне:

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

Працює для мене.


ng serve --port 8080 --publicHost 0.0.0.0
Nitin.

8

Використання команди нижче працює для мене.

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

1
Це працює. Але де я можу знайти пояснення щодо опції '--public' в Інтернеті? Я знайшов лише параметр '--public-host'
niaomingjian

8

У angular.json додайте наступне в розділі архітектор -> подати -> параметри

"disableHostCheck": true

Отримав відповідь із цієї сторінки випуску Github


1
Просто хочу зазначити, що це вирішує проблему локального запуску на машині. Я не впевнений, чи вирішує це для Cloud9 відповідно до оригінального запитання, наведеного вище.
Том Доу,

Це правильне чисте рішення, якщо ви хочете вмикати його на кожному ng serve(і, мабуть, хочете в процесі розробки)
jowey

6

Я зіткнувся з такою ж помилкою після розгортання мого кутового додатка на екземплярі AWS EC2, що має зображення bitnami. Потім я запустив свою програму за допомогою команди нижче, і вона працювала нормально.

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 .

Приділіть трохи часу, щоб прочитати цю статтю, яку варто прочитати.


це спрацювало для мене, але потрібно було включити точний субдомен, який використовується в браузері для public-host: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



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команди. Це воно.


0

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



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.