120

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

我的网站上的结果:

无效的主机标头

4

25 回答 25

161

--disable-host-check如果您需要从 Cloud9 运行,该标志可以正常工作。

我使用以下命令:

ng serve --open --host $IP --port $PORT --disable-host-check
于 2017-07-28T19:43:02.790 回答
42

在 angular.json 中,在架构师 -> 服务 -> 选项下添加以下内容

"disableHostCheck": true

从这个Github 问题页面得到了答案

于 2019-08-12T12:53:09.763 回答
35

您需要指定主机

ng serve --port 8080 --host 123.34.56.78
于 2017-05-15T12:44:39.670 回答
23

这对我有用:

ngrok http --host-header=rewrite PORT

例如 :

ngrok http --host-header=rewrite 4200
于 2019-01-11T00:38:22.280 回答
19

看到这个问题

在(第 425 行)中编辑以下行 node_modules/webpack-dev-server/lib/Server.js,更改为:

return true;

我正在使用 cloud9 IDE,然后运行:ng serve --port 8080 --host 0.0.0.0. 现在工作正常。

于 2017-04-30T22:30:17.913 回答
18

就我而言,我使用我的主机名来更新 /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 :)

于 2018-08-28T02:50:31.433 回答
14

您需要运行以下命令:

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

为我工作。

于 2017-05-04T09:32:52.247 回答
8

使用下面的命令对我有用。

ng serve --host 0.0.0.0 --port 8080  --public ipAddress
于 2017-08-21T06:08:56.673 回答
7

对 Angular CLI 使用以下命令对我有用:6.0.7

ng serve --host 0.0.0.0 --port 8080 --disableHostCheck
于 2018-06-07T18:26:49.830 回答
6

在具有 bitnami 图像的 AWS EC2 实例上部署我的 Angular 应用程序后,我遇到了同样的错误。然后我使用以下命令启动了我的应用程序,它运行良好。

ng serve --host 0.0.0.0 --port 8080 --disableHostCheck true
于 2018-02-22T18:16:38.963 回答
5

在以下版本的 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

请花一些时间阅读那篇值得一读的文章。

于 2018-07-24T06:49:16.667 回答
5

ng 服务 --host 0.0.0.0 --port 1234 --public-host mydomain.com

这对我有用。

于 2020-09-25T08:59:38.207 回答
4

使用下面的命令和最新版本的 Angular CLI 对我有用。

ng serve --host 0.0.0.0 --public-host <workspace>-<username>.c9users.io
于 2017-06-16T12:10:11.850 回答
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 中更改“开始”:“ng serve -H yourworkspace-yourusername.c9users.io

然后你只需要转到应用程序文件夹并在终端中启动应用程序npm start

刚才检查了一下,它工作

于 2017-05-26T18:27:08.050 回答
1

除了@ruwan800 的回答,最好始终启用主机检查。这可以防止使用DNS 重新绑定的攻击。

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

要解决您的问题,请检查您是否拥有对主机 IP 的完全访问权限。这是一个可能的原因。

如果这不能解决您的问题,那么您可以自担风险,在您的角度配置中禁用主机检查。不过,我建议您仅对本地计算机执行此操作。

如果您选择这样做,只需在您的angular.json.
即,下architect -> serve -> configurations -> development,设disableHostCheck: false

喜欢:

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

这样,它仅在以开发模式运行时禁用,而不是在部署在您的服务器上时禁用。

于 2022-02-19T11:02:59.577 回答
1

请不要将--disable-host-check标志用于开发服务器!

这是一个主要的安全问题:一些恶意代码可以代表您请求您的开发服务器并获得响应。问题是开发服务器也发送你的应用程序的源代码,所以基本上,如果你使用那个标志,你就可以访问你正在构建的应用程序的代码。

试试这个:

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

更多详细信息:webpack-dev-server/middleware security issues

于 2022-01-06T14:38:39.960 回答
1

以下两种解决方案都可以。在命令行中:

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

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

于 2018-03-28T08:28:30.997 回答
1

参考:https ://github.com/angular/angular-cli/issues/6070

使用公共标志。例如:ng serve --host <workspace>-<username>.c9users.io --public

于 2017-06-07T17:49:47.127 回答
1

我得到了同样的错误。公共选项为我解决了如下问题:

ng serve --host 0.0.0.0 --port 8080 --live-reload-port 8081 --public $C9_HOSTNAME
于 2017-08-24T10:39:18.683 回答
0

问题是您只能访问您在 --public 参数中指定的链接。就我而言,我在 --public 中提供了 IP 地址,并尝试使用我针对该 IP 注册的域来访问它。但是 ng 将它绑定到 --public 中提供的唯一主机。

为了解决这个问题,我又提供了一个参数:disable-host-check. 完成命令:ng serve --disable-host-check --host 0.0.0.0 --port 3100 --public x.x.x.x

要了解更多信息,请单击此处

于 2017-10-29T14:02:17.793 回答
0

尝试使用该localtunnel实用程序访问我们的应用程序时出现此错误。

@tarn 的添加--disableHostCheck trueng serve命令的建议(来自对已接受答案的评论)起到了作用。

于 2017-11-14T22:20:02.430 回答
0

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

运行ng eject它将创建webpack.config.js. npm install如果它正在询问,请运行。 在下面"disableHostCheck":true添加。如下所示: devServerwebpack.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命令运行角度。而已。

于 2017-11-21T07:34:55.067 回答
0

您只需将 0.0.0.0 更改为您的本地 IP 地址,如 192.168.1.42 即可。

ng serve --host 192.168.1.42
于 2017-08-30T10:40:57.003 回答
-1

试一试

ng serve --host <private IP> --port <host port> --public-host <public IP>
于 2019-03-09T22:28:08.810 回答
-4

将文件“node_modules/webpack-dev-server/lib/Server.js”中的第 425 行从 false 更改为 true。IE,

之前:返回假;

更新:返回真;

于 2018-07-31T04:56:25.360 回答