运行Angular / cli开发服务器c9.io时出现“无效的主机头”


84

当前命令: ng serve --host --public $IP:$PORT

我的网站上的结果:

无效的主机头


与上面相同...相同的结果
Olejs

Answers:


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 --host 0.0.0.0 --port 8080 --disableHostCheck true而不用编辑代码来运行
tarn

3
在node_modules / webpack-dev-server / lib / Server.js中更改以下行:if(this.disableHostCheck)返回true;更改以返回true;
rakesh kashyap

请参阅有关disableHostCheck潜在风险的Angular CLI GitHub问题,以了解您在做什么。
jmq

阿迪蒂洛耶(Adetiloye)的答案要好得多
马修·多尔曼

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
对我来说这是服务--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

在angular.json中,在Architect-> serve- > options下添加以下内容

"disableHostCheck": true

从此Github问题页面获得了答案


1
只想指出,这解决了在计算机上本地运行的问题。我不确定是否可以按照上述OP原始问题为Cloud9解决它。
Tom Doe

如果您想在每个ng serve(并可能要在开发中)启用它,那么这是一个干净的解决方案
jowey

6

在具有bitnami映像的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,2018年

3

感谢Mateusz Sawa,这实际上是通过youtube视频评论之一解决的

这里检查一下。

-在package.json中指定主机不再起作用-

只是要注意,没有必要使用视频中使用的命令,下面的说明足以使应用程序使用常规angular-cli开发工作

首先,您需要在etc /文件夹中找到主机

cd ..在控制台中键入,直到到达linux计算机的根目录并始终检查ls列出的内容

如果看到主机文件,则说明位置正确,然后使用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参数中指定的链接。就我而言,我已在--public中提供了IP地址,并尝试使用针对该IP注册的域来访问该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 trueng serve命令中。


0

如果有人仍然invalid host header遇到问题,这是解决方案:

运行ng eject它将创建webpack.config.jsnpm install如果询问,请运行。将以下内容添加"disableHostCheck":truedevServerwebpack.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"

现在使用npm start命令运行角度。而已。


0

感谢所有解决方法,--disable-host-check对我有用,但我不明白为什么我必须使用该解决方法,为什么我不能像其他任何新应用一样使用。


-1

试一下

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.