ChatGPT解决这个技术问题 Extra ChatGPT

如何允许本地主机之外的访问

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

你能告诉我如何解决它吗?我没有使用 npm(节点项目管理 - 节点安装/节点启动)来安装和运行项目。

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

你用 ng 服务吗?
是的,我正在使用 ng 服务器
您是否尝试过 ng serve --host 10.123.14.12?
我厌倦了 ng serve 它说“我必须在一个 angular--cli 项目中才能使用 serve 命令”。

N
Nicu

使用 ng serve --host 0.0.0.0 将允许您使用您的 ip 而不是 localhost 连接到 ng serve

编辑

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

编辑 2

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

作为旁注确保您的连接在您的操作系统设置中设置为公共。


它说“你必须在一个 angluar--cli 项目中才能使用 serve 命令”,当我写 ng sreve 时带有红色警告,还有一条黄色消息表明我正在运行 Node 6.2.2 版本,其中编写 ng serve 后,未来版本的 CLI 将不再支持
首先,尝试更新节点,其次,尝试重新启动终端/vscode
我将它从包 json 更新为 6.0.46 为“@types/node”:“6.0.46”,但仍然收到相同的消息
我自己找到了答案。我应该添加 ""server": "webpack-dev-server --inline --progress --host 0.0.0.0 --port 3000"," 到 packagejson
这对我有用:ng serve --open --host 0.0.0.0 --disable-host-check
A
Adiii

运行命令

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

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


我不需要 --disable-host-check。 ng serve --host 0.0.0.0 适合我。主机检查应该做什么?
我曾经需要 disabled-host-check 否则我收到消息“无效的主机标头”
有没有办法在配置文件中定义它以避免每次都提到它?
@AyushKumar 您可以在 package.json 中定义它,例如 { "scripts": { "start": "ng serve --host=0.0.0.0 --disable-host-check" } }
对我来说很棒。
S
Sajad

Mac 用户:

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

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


曾经为我工作,现在不再工作。想知道为什么。我觉得我已经尝试了一切!我的防火墙已禁用。 ng serve --host 10.xxx --disable-host-check / ng serve --host 0.0.0.0 --disable-host-check -> 无法从与 10.xxx 位于同一网络的 Windows 远程计算机访问:4200
在 Angular 7 和 MacOS 10.14.6 中运行良好
对于它的价值,截至 2019 年 10 月,接受的答案在 MacOS 上对我有用。
这对我有用,经过广泛搜索后,这是我看到的指定此关键步骤的唯一答案:在您的 iphone safari 浏览器的地址栏中,插入: 192.168.1.x:4200 ,其中 x =您的IP地址的最后数字。包括“:4200”对我来说是不同的。
@RafaëlMoser 你解决了吗?我有同样的问题,我真的很无能。
I
Irshad

您可以使用以下命令使用您的 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

现在 -disableHostCheck=true|false 在我的版本 Angular 8 中。
如果您不使用 ng serve,这是可行的
r
rhavelka

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

...

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

T
TSR

https://i.stack.imgur.com/JEhEj.png


即使在使用 ng serve --host 0.0.0.0 服务后,我也无法从同一网络访问。但是正如您提到的,防火墙许可是问题所在。感谢您花时间分享这个。
v
vinzee

无需更改 package.json

对我来说,它使用:

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

主机:http://localhost:5999/


A
Adiii

如果您在 Docker 中遇到同样的问题,那么您可以在 Dockerfile 中使用下面的 CMD

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"]

R
Rakesh Ranjan

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

然后运行命令 - ng serve --host 10.202.32.45,其中 10.202.32.45 是您的 IP 地址。

您将能够在 10.202.32.45:4200 访问您的页面,其中 4200 是您的端口号。

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


是否可以双向访问?
它的工作原理谢谢..我想我在看错误的 IP 地址
知道这听起来很傻,但请确保您的手机使用与开发机器相同的 wifi 网络。我正在使用访客网络... +1 是唯一对我有用的答案。
U
U12-Forward

一个可能对某人有帮助的快速解决方案:

在您的 package.json 中添加此行作为 start ng serve --host 0.0.0.0 --disable-host-check 的值

前任:

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

然后只需执行 startnpm run start

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


o
otsili

ng serve --host 0.0.0.0 将允许您使用您的 ip 而不是 localhost 连接到 ng serve。打开浏览器到 :4200 使用 ng serve --host 0.0.0.0 --disable-host-check 将允许您使用域而不是 localhost 连接到 ng serve。打开浏览器到 :4200


v
vinzee

在 Angular 版本 11(可能还有一些早期版本)中,--public-host 选项对我有用,例如:

$ ng serve --host 0.0.0.0 --public-host app.mypublicdomain.com

Z
Zombie

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


P
Partho

使用 ng serve --host 0.0.0.0 命令解决了我的问题。使用 192.168.xx:5200 从另一台机器访问应用程序。

此外,检查客户端和服务器上的防火墙规则(暂时禁用防火墙或创建规则以允许流量)


N
Nanda Kishore Allu

使用 ng serve --host --port

ng 服务 --host=192.111.1.11 --port=4545。

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

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


J
Jithin U. Ahmed
ng serve --open --host 0.0.0.0 --disable-host-check

这对我来说非常有效(即使使用带有指向该 IP 的 A 主机的公共 IP)。


d
double-beep

创建 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

Y
Yonas

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

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

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


B
BossmanT

对于使用节点项目管理器的人来说,添加到 package.json 的这一行就足够了。对于角度 CLI 用户,mast3rd3mon 的回答是正确的。

你可以加

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

到 package.json