Different ports for frontend and backend. How to make a request?
使用Angular-CLI作为前端。 4200端口
使用Express作为后端。 8080端口
目录如下:
1 2 3 4 5 | Application - backend - ...Express architecture - frontend -...Angular2 architecture |
因此,我正在运行两个项目,两个指挥官,一个用于前沿,第二个用于后端。
让我们假设我在后端有一个返回一些字符串的层。
1 2 3 | app.get('/hello', function(req, res) { res.send("Hello!"); } |
如何从前端向后端发出请求并获取该字符串?我不想知道我应该怎么使用Angular2,因为那不是重点。我在问,我应该使用什么技术才能在不同端口上连接这两个(前端和后端)侧。如果我只运行它们并从前端发出请求,则会收到一条错误消息,因为它找不到
您对
绝对网址
如果要访问其他(快速)应用程序上的
科尔斯
通过这种方式,可以定位正确的应用程序,但是您可能会遇到CORS问题,因为浏览器将阻止从
在我看来,使用这种方法有两个缺点。首先,您需要一种方法来告诉您的前端可以通过哪个绝对URL到达后端。这必须是可配置的,因为您需要不同的URL来进行开发,登台和生产。然后,您还需要一种方法来管理所有列入白名单的URL,因为与运行开发中的前端时相比,生产中的前端将具有不同的URL。这可能会很麻烦。
代理您的后端
我认为
更好的方法是通过前端应用程序中的后端
为此,您需要配置您的angular dev服务器以代理请求。有关如何执行此操作的详细信息,请参阅https://github.com/angular/angular-cli#proxy-to-backend上的文档。投入生产时,您可以通过配置网络服务器来完成此操作,例如nginx代理请求。