"Invalid Host header" when running Angular/cli development server c9.io
Asked Answered
P

25

157

Current command: ng serve --host --public $IP:$PORT

Results on my website:

Invalid Host header

Pibroch answered 28/4, 2017 at 10:9 Comment(1)
it's the same as above... the same resultPibroch
R
212

The --disable-host-check flag works fine if you need to run from Cloud9.

I use the following command:

ng serve --open --host $IP --port $PORT --disable-host-check
Radiogram answered 28/7, 2017 at 19:43 Comment(5)
It will work but if you use --disable-host-check you will get a warning in the console. WARNING: Running a server with --disable-host-check is a security risk. See medium.com/webpack/… for more information.Price
this option is not available anymoreApodaca
I confirm the --disable-host-check flag is working in Angular version 14Bearberry
@Apodaca this is still relevant.Jacquez
@Jacquez it seems that this option is available again: see ng serveApodaca
A
64

In angular.json, add the following under architect -> serve -> options

"disableHostCheck": true

Got the answer from this Github Issue Page

Aether answered 12/8, 2019 at 12:53 Comment(4)
Just want to point out that this resolves the issue for running locally on the machine. I'm not sure if it solves it for Cloud9 per the OP original question above.Barnaba
This is the right an clean solution if you want to enable it on every ng serve (and probably you want to in development)Trojan
Is there a way to configure this for the development environment only?Salo
@JellicleCat Set "disableHostCheck": false under architect -> serve -> configurations -> productionAether
S
41

You need to specify the host

ng serve --port 8080 --host 123.34.56.78
Shig answered 15/5, 2017 at 12:44 Comment(0)
K
31

This works for me :

ngrok http --host-header=rewrite PORT

for instance :

ngrok http --host-header=rewrite 4200
Kanara answered 11/1, 2019 at 0:38 Comment(2)
Not the answer the OP needed, but thanks for adding it anyway. Works for ngrok tunneling without changing project settings.Bathe
I am building a Shopify app, I have to run yarn start frontend --public-host=abc-xyz.ngrok.io , with this answer, i can just yarn start frontend . I think the issue should be fixed with disableHostCheck.Murrell
C
19

See this issue

Edit the following line in node_modules/webpack-dev-server/lib/Server.js (line 425), change to:

return true;

I am using cloud9 IDE then run: ng serve --port 8080 --host 0.0.0.0. Now works fine.

Chitterlings answered 30/4, 2017 at 22:30 Comment(6)
You can run without edit code by append --disableHostCheck true ng serve --host 0.0.0.0 --port 8080 --disableHostCheck trueGrenville
change the following line in node_modules/webpack-dev-server/lib/Server.js: if(this.disableHostCheck) return true; change to return true;Pry
See this Angular CLI GitHub issue regarding disableHostCheck's potential risks, just to be aware of what you're doing.Mckinleymckinney
Adetiloye's answer is much betterStoriette
Run ng serve --host 0.0.0.0 --disable-host-checkSosa
modifying node_modules instead of using proper ng-cli parameters is absurdly bad practiceHighlander
S
19

In my case, I use my host name to update /etc/hosts file.

vi /etc/hosts

and add your host name last line.

127.0.0.1 myHostName.com

to connect my server,

ng serve -o

An error occurred when connecting to myHostName.com:4200.

so, I did like this,

ng serve --host 0.0.0.0 --disableHostCheck true

Reconnecting to myHostName.com:4200 :)

Scrope answered 28/8, 2018 at 2:50 Comment(2)
this is worked for me ng serve --host 0.0.0.0 --disableHostCheck true. thank you @ScropeIgnacioignacius
Thank you so much! Adding --host 0.0.0.0 let me use my custom hostname that I have set in my Windows hosts file to switch tenants. I'm not sure why this stopped working for me, but it may have something to do with a Node.js upgrade.Clinic
S
17

You need to run following:

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

Works for me.

Sheilasheilah answered 4/5, 2017 at 9:32 Comment(1)
ng serve --port 8080 --publicHost 0.0.0.0Sheilasheilah
D
9

Using the command below works for me.

ng serve --host 0.0.0.0 --port 8080  --public ipAddress
Dishman answered 21/8, 2017 at 6:8 Comment(1)
It works. But where can I find out the explanation about the '--public' option online? I only found out the '--public-host' optionRosauraroscius
C
7

Use the command below works for me for Angular CLI: 6.0.7

ng serve --host 0.0.0.0 --port 8080 --disableHostCheck
Candidate answered 7/6, 2018 at 18:26 Comment(0)
P
7

Tested on the below version of Angular and server Amazon.

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

ng command options has been changed, now use configuration instead of env. The command which worked for me is

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

Never use --disable-host-check on a public server. Angular will warn you if you use this. It may work but it is a serious security issue. You will get this message if you use that flag.

WARNING: Running a server with --disable-host-check is a security risk. See https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a for more information.

Please take some time to read that article it is worth reading.

Price answered 24/7, 2018 at 6:49 Comment(1)
this worked for me, but it was necessary to include the exact subdomain used in the browser for public-host: ng serve --host 0.0.0.0 --public-host sub.myhost.comAldose
A
7

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

This works for me.

Absolve answered 25/9, 2020 at 8:59 Comment(0)
P
7

Please, don't use the --disable-host-check flag for a development server!

This is a major security issue: some malicious code can request your development server on your behalf and get the response. The problem is that the development server also sends the source code of your application, so basically, you give access to the code of the application you are building if you use that flag.

Try this instead:

ng serve --public-host my.dev.host.com

More detailed information here: webpack-dev-server/middleware security issues

Psychobiology answered 6/1, 2022 at 14:38 Comment(1)
I don't think there is a difference between adding on development the --disable-host-check flag and using your line ng serve --public-host my.dev.host.com angular warns you that you are using --disable-host-check flag in both cases. You just need to add the conf in developmentStairwell
G
6

I was facing same error after deploying my angular app on AWS EC2 instance having bitnami image. Then i launched my app with below command and it worked fine.

ng serve --host 0.0.0.0 --port 8080 --disableHostCheck true
Geisler answered 22/2, 2018 at 18:16 Comment(0)
S
6

In addition to @ruwan800's answer, it's best to have host checking enabled at all times. This prevents attacks using DNS Rebinding.

https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a

To fix your issue, check if you have full access to your host IP. That's a likely cause.

If that doesn't solve your issue, then at your own risk, you can disable host check in your angular config. I'll advise you to do this for only your local machine though.

If you choose to do so, just set disable host check to true under your dev config in your angular.json.
That is, under architect -> serve -> configurations -> development, set disableHostCheck: true

Like:

"architect": {
  //...
  "serve": {
    //...
    "configurations": {
      //...
      "development": {
       //...
       "disableHostCheck": true
      }
    },
  },
  //...
}

This way, it only disables when running in dev mode, not when deployed on your server.

Skolnik answered 19/2, 2022 at 11:2 Comment(0)
A
4

Using the command below with the latest version of Angular CLI works for me.

ng serve --host 0.0.0.0 --public-host <workspace>-<username>.c9users.io
Arondell answered 16/6, 2017 at 12:10 Comment(0)
M
3

This was actually solved in one of the youtube video comments thanks to Mateusz Sawa

Go here to check it out.

-- specifyng a host in package.json does not work anymore --

just to note that it is not necessary to use the command that was used in the video, bellow instructions are enough to make the app work using regular angular-cli development

first you need to find the hosts in the etc/ folder

type cd .. in the console until you reach the root of the linux machine and check always with ls what is listed

if you see the hosts file, than you are in the right location and then use sudo vi hosts to edit it

add the line bellow all ip addresses "0.0.0.0 yourworkspace-yourusername.c9users.io" (without quotes of course :-) )

also in package.json change "start": "ng serve -H yourworkspace-yourusername.c9users.io"

then you just need to go to the application folder and start the app in the terminal with npm start

checked it just now and it worked

Muntin answered 26/5, 2017 at 18:27 Comment(0)
G
2

I got same error. Public option solved problem for me like below:

ng serve --host 0.0.0.0 --port 8080 --live-reload-port 8081 --public $C9_HOSTNAME
Graphophone answered 24/8, 2017 at 10:39 Comment(0)
S
1

Refer to: https://github.com/angular/angular-cli/issues/6070

use the public flag. for example: ng serve --host <workspace>-<username>.c9users.io --public

Suctorial answered 7/6, 2017 at 17:49 Comment(0)
O
1

Below both solutions will work. In command line :

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

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

Olnay answered 28/3, 2018 at 8:28 Comment(0)
W
0

You should just change 0.0.0.0 to your local IP address like 192.168.1.42 and it should work.

ng serve --host 192.168.1.42
Wordage answered 30/8, 2017 at 10:40 Comment(0)
A
0

The thing is you can only access to link you have specified in --public parameter. In my case, I have provided the IP address in --public and trying to access it with the domain I registered against that IP. But ng binds it for the only host provided in --public.

To solve this problem, I supplied one more parameter: disable-host-check. Complete command: ng serve --disable-host-check --host 0.0.0.0 --port 3100 --public x.x.x.x

To know more, click here

Antietam answered 29/10, 2017 at 14:2 Comment(0)
S
0

I was getting this error when trying to access our app using the localtunnel utility.

@tarn 's suggestion (from a comment on the accepted answer) of adding --disableHostCheck true to the ng serve command did the trick.

Starr answered 14/11, 2017 at 22:20 Comment(0)
S
0

Here is solution if anybody still stuck in invalid host header issue:

Run ng eject it will create the webpack.config.js. Run npm install if it is asking. Add below "disableHostCheck":true to devServer in webpack.config.js. Like below:

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

Then in package.json file change start option under ng like this

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

Now run the angular with npm start command. Thats it.

Sherellsherer answered 21/11, 2017 at 7:34 Comment(0)
F
-1

Give this a shot

ng serve --host <private IP> --port <host port> --public-host <public IP>
Furnishing answered 9/3, 2019 at 22:28 Comment(0)
C
-5

Change the line 425 in file "node_modules/webpack-dev-server/lib/Server.js" from false to true. i.e,

Before: return false;

Updated: return true;

Chrotoem answered 31/7, 2018 at 4:56 Comment(2)
Add some more description.Hedvig
you should not be touching node vendorsHaddock

© 2022 - 2024 — McMap. All rights reserved.