【发布时间】:2021-12-21 19:19:53
【问题描述】:
我正在尝试设置 Angular 应用程序以使用 2 个不同的本地主机。
我在项目根目录中创建了一个backend 文件夹,并在其中添加了echo.php 文件。在项目根目录中,我还创建了具有以下内容的 proxy.conf.json:
{
"/backend/**": {
"target": "http://localhost:80",
"secure": false
}
}
我尝试通过以下方式获取 echo.php:
ngOnInit(){
this.http.get('http://localhost:4200/backend/echo.php').subscribe(data => {
console.log(data);
});
}
启动 Angular 应用程序:
ng serve --port 4200 --host 0.0.0.0 --proxy-config proxy.conf.json
在浏览器控制台中,我收到了504 error Gateway Timeout。在终端中,错误听起来有点不同:
[HPM] Error occurred while trying to proxy request /backend/echo.php from localhost:4200 to http://localhost:80 (ENOTFOUND)
我不知道我做错了什么。你能为我指出正确的方向吗? 我可以使用以下 url 直接访问非角(在端口 80 上运行)服务器上的文件:http://localhost/backend/echo.php。
编辑:
echo.php:
<?php
echo "data from php";
【问题讨论】:
-
如果您在直接使用后端时遇到错误,则该错误似乎与 Angular 无关。将问题标记为
php并包括您的 PHP 代码和相关配置而不是 Angular 代码,您会更幸运。 (你在使用一些 PHP 框架吗?包括那个) -
直接使用localhost/backend/echo.php 访问资源时没有收到任何错误。仅当从 localhost:4200 代理到 localhost:80 时才会抛出错误
-
我刚刚尝试了您的代码,它可以在我的机器上运行。当您说
"In Terminal, the error sounds a bit different"时,您是使用curl 从终端调用您的服务器还是您的意思是ng serve记录的消息?如果是 curl,您可以发布您使用的命令吗?另外,您在哪个系统/容器上运行它? -
使用 ng serve 时出现错误信息。我不确定系统/容器是什么意思。我在 OSX 上运行它:) 同时,我意识到添加 "changeOrigin":true 解决了这个问题(不知道为什么文档中没有提到它)。但你猜怎么着,问题还不止于此 :D stackoverflow.com/questions/47613765/… 。配置 Angular 真的应该这么痛苦吗?
-
好的,问题终于解决了。这一次是好的 :D changeOrigin 并没有真正修复它。我更改了 GET 链接并在不知情的情况下实际提供静态 PHP 文件。更改资源链接后,甚至从未使用过代理。真正的问题是在 proxy.conf.json 中指定目标。我在下面发布了答案。
标签: angular