如何允许本地主机外部访问


211

如何在Angular2的本地主机之外允许访问?我可以localhost:3030/panel轻松导航,但是写IP之类的IP时却无法导航10.123.14.12:3030/panel/

能否请允许我解决该问题?我没有使用npm(节点项目管理-节点安装/节点启动)来安装和运行项目。

如果您愿意,我可以提供package.jsonindex.html


1
你用ng服务吗?
mast3rd3mon

1
是的,我正在使用ng服务器
Tonyukuk

4
您是否尝试过服务--host 10.123.14.12?
Digvijay

1
我厌倦了发球,它说:“我必须在ordre的一个有角度的cli项目中才能使用发球命令”。
Tonyukuk

Answers:


388

使用ng serve --host 0.0.0.0可以让您ng serve使用ip代替ip连接到localhost

编辑

在较新版本的cli中,您必须提供本地IP地址

编辑2

在较新版本的cli(我认为v5及更高版本)中,您可以0.0.0.0再次用作ip来托管它,以便网络上的任何人与之通信。


1
它说“您必须在angluar-cli项目中才能使用serve命令”,当我编写ng sreve时显示红色警告,同时显示一条黄色消息,表明我正在运行Node的6.2.2版本。编写ng serve之后,以后的CLI版本将不再支持
Tonyukuk

1
首先,尝试更新节点,第二,尝试重新启动终端/ vscode
mast3rd3mon

1
我将其从json包更新为“ @ types / node”:“ 6.0.46”,更新为6.0.46,但仍收到相同的消息
Tonyukuk

1
我不了解人们的奉献方式-对我的问题进行投票,也不知道是谁做的。即使您理解错误的问题并给我错误的答案,他们仍然给予“-”的美誉。我自己找到了答案。我应该将“ server”:“ webpack-dev-server --inline --progress --host 0.0.0.0 --port 3000”添加到packagejson
Tonyukuk

10
这对我ng serve --open --host 0.0.0.0 --disable-host-check
Jonathan.Brink

46

Mac用户:

  1. 进入系统偏好设置->网络-> Wi-Fi
  2. 复制状态下面的IP地址(通常为192.168.1.x)
  3. 将其粘贴到您的ng服务中,例如: ng serve --host 192.168.1.x

然后,您必须能够通过看到其他设备上的页面192.168.1.x:4200


1
曾经为我工作而不再工作。想知道为什么。我觉得我已经尝试了一切!我的防火墙已禁用。ng serve --host 10.xxx --disable-host-check / ng serve --host 0.0.0.0 --disable-host-check->无法从与10.xxx在同一网络上的Windows远程计算机访问:4200
拉斐尔·摩泽(RafaëlMoser)

在角7,和MacOS 10.14.6效果很好
BKS

对于它的价值,截至2019
Alexander Nied

这对我有用,并且在广泛搜索之后,这是我看到的唯一指定此关键步骤的答案:在您的iPhone Safari浏览器的地址栏中,插入:192.168.1.x:4200,其中x =您的IP地址的最后一位数字。对我来说,包括“:4200”是不同的。
9gt53wS

@RafaëlMoser您解决了吗?我有同样的问题,我真的很无知。
Maaddy

36

运行命令

ng serve --host=0.0.0.0 --disable-host-check

这将禁用主机检查,并允许使用IP地址从外部(而不是localhost)进行访问


3
我不需要--disable-host-check。 ng serve --host 0.0.0.0对我来说很好。主机检查应该做什么?
安德鲁(Andrew)

5
我曾经需要过一次,disabled-host-check否则我收到消息“无效的主机头”
GameDroids

有没有一种方法可以在配置文件中定义它以避免每次都提及它?
Ayush Kumar,

15

您可以使用以下命令来访问您的IP。

ng serve --host 0.0.0.0 --disable-host-check

如果您使用的是npm,并且希望避免每次都运行该命令,则可以在脚本部分的package.json文件中添加以下行。

"scripts": {
    ...
    "start": "ng serve --host 0.0.0.0 --disable-host-check"
    ...
}

然后,您可以使用以下命令运行您的应用,以便从同一网络中的其他系统进行访问。

npm start

3
在我的版本Angular 8中,它现在是-disableHostCheck = true | false。–
Tony,

9

我只是angular.json在我的项目中编辑文件,如下所示

...

    "serve": {
      "builder": "@angular-devkit/build-angular:dev-server",
      "options": {
        "browserTarget": "project:build",
        "host": "0.0.0.0"
      },

...


9

您还可以使用ngrok内省通过隧道运行的所有HTTP通信 ,然后可以使用ngrok http --host-header=rewrite 4200


6

打开cmd并导航到项目位置,即在该项目中运行npm install或ng serve的位置。

然后运行命令-您的IP地址ng serve --host 10.202.32.45在哪里10.202.32.45

您将可以在10.202.32.45:4200端口号4200处访问页面。

注意:如果您使用此命令提供应用程序,则将无法访问localhost:4200


是否可以双向访问?
zishan paya

它的工作原理..我想我在看错IP地址
Tejashri Patange

知道这听起来很傻,但是请确保您的手机使用与开发人员机器相同的wifi网络。我正在使用访客网络... +1是唯一对我有用的答案。
greg

5

一个可以帮助某人的快速解决方案:

添加该行值开始ng serve --host 0.0.0.0 --disable-host-check 在你的package.json

例如:

{
"ng": "ng",
"start": "ng serve --host 0.0.0.0 --disable-host-check",
"build": "ng build",
}

再简单地做startnpm run start

您将能够从其他本地IP访问您的项目。


4

问题出在防火墙。如果您使用的是Windows,请确保允许节点通过 在此处输入图片说明


即使使用ng serve --host 0.0.0.0,我也无法从同一网络访问。但是正如您提到的,防火墙许可是问题。感谢您抽出宝贵时间分享此内容。
桑迪B

2

如果您在Docker内部遇到相同的问题,则可以CMD在Dockerfile中使用以下内容。

CMD ["ng", "serve", "--host", "0.0.0.0"]

或完整的Dockerfile

FROM node:alpine
WORKDIR app
RUN npm install -g @angular/cli
COPY . .
CMD ["ng", "serve", "--host", "0.0.0.0"]

-1

创建proxy.conf.json并粘贴此配置

{  
"/api/*":
    {    
        "target": "http://localhost:7070/your api project name/",
        "secure": false,
        "pathRewrite": {"^/api" : ""}
    }
}

更换:

let url = 'api/'+ your path;

从CLI运行:

ng serve  --host port.number —-proxy-config proxy.conf.json

-1

对我来说,它可以使用“ ng serve --open --host 0.0.0.0”工作,但是有一个警告


警告:这是一台简单的服务器,可用于在本地测试或调试Angular应用程序。尚未对其进行安全性审查。

将此服务器绑定到打开的连接可能会损害您的应用程序或计算机。使用与传递给“ --host”标志的主机不同的主机可能会导致websocket连接问题。在这种情况下,您可能需要使用“ --disableHostCheck”。


-1

无需package.json进行更改。

对我来说,它可以使用:

ng serve --host = 0.0.0.0 --port = 5999 --disable-host-check

主机:http:// localhost:5999 /


-1
  • 使用ng serve --host<Your IP> --port<Required if any>

  • ng serve --host = 192.111.1.11 --port = 4545。

  • 现在,您可以在编译结束时看到以下行。

Angular Live Development Server正在192.111.1.11:4545上侦听,请在http://192.111.1.11:4545/**上打开浏览器。


-3

对于正在使用节点项目管理器的人员,添加到package.json的这一行也足够了。对于有角度的CLI用户,mast3rd3mon的答案为true。

你可以加

"server": "webpack-dev-server --inline --progress --host 0.0.0.0 --port 3000"

到package.json

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.