Reputation: 1707
Current command: ng serve --host --public $IP:$PORT
Results on my website:
Invalid Host header
Upvotes: 159
Views: 199060
Reputation: 1120
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.
Upvotes: 6
Reputation: 919
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
Upvotes: 7
Reputation: 111
ng serve --host 0.0.0.0 --port 1234 --public-host mydomain.com
This works for me.
Upvotes: 7
Reputation: 1887
In angular.json, add the following under architect -> serve -> options
"disableHostCheck": true
Got the answer from this Github Issue Page
Upvotes: 67
Reputation: 848
You need to run following:
ng serve --port 8080 --publicHost 123.34.56.78 // your server ip or host name.
Works for me.
Upvotes: 17
Reputation: 1010
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 :)
Upvotes: 19
Reputation: 471
This works for me :
ngrok http --host-header=rewrite PORT
for instance :
ngrok http --host-header=rewrite 4200
Upvotes: 33
Reputation: 385
Give this a shot
ng serve --host <private IP> --port <host port> --public-host <public IP>
Upvotes: -1
Reputation: 415
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;
Upvotes: -5
Reputation: 6519
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.
Upvotes: 7
Reputation: 87
Use the command below works for me for Angular CLI: 6.0.7
ng serve --host 0.0.0.0 --port 8080 --disableHostCheck
Upvotes: 7
Reputation: 153
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
Upvotes: 1
Reputation: 2671
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
Upvotes: 6
Reputation: 93
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.
Upvotes: 0
Reputation: 7513
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.
Upvotes: 0
Reputation: 2195
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
Upvotes: 217
Reputation: 3270
You need to specify the host
ng serve --port 8080 --host 123.34.56.78
Upvotes: 41
Reputation: 323
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.
Upvotes: 19
Reputation: 1319
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
Upvotes: 0
Reputation: 21
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
Upvotes: 0
Reputation: 934
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
Upvotes: 2
Reputation: 131
Using the command below works for me.
ng serve --host 0.0.0.0 --port 8080 --public ipAddress
Upvotes: 9
Reputation: 129
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
Upvotes: 4
Reputation: 6088
Refer to: https://github.com/angular/angular-cli/issues/6070
use the public flag. for example: ng serve --host <workspace>-<username>.c9users.io --public
Upvotes: 1
Reputation: 31
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
Upvotes: 3