提问者:小点点

Node+Express后端:调用第三方API


我有node+express后端,它由我的角前端(两个独立的域)调用。 在我的后端,我正在做一个API调用其他一些第三方API。 当我将后端部署到本地时,它工作得很好,但是当将它部署到aws时,请求超时(CORS问题?)。 我检查了部署中的问题,并且它成功地部署了,并且我能够调用没有调用第三方API的endpoint。 我还检查了API,当我手动调用它或直接从我的前端调用它时,它是工作的。

知道问题出在哪里吗?


共1个答案

匿名用户

是的,这是CORS的问题。 处理这一问题的最常见方法是添加反向代理(例如Nginx),以拥有一个既为应用程序(静态文件)提供服务又公开后端(API)的单一域。

                    +----------+
                    |          |
                    |  Client  |
                    |          |
                    +----+-----+
                         |
                         |  myDomain.com
                         |              
                     [INTERNET]
                         |
                         |
                         v  :80
                +--------+-------+
            /*  |                |   /api
     +----------+  Revese Proxy  +---------+
     |          |                |         |
     |          +----------------+         |
     |                                     |
     |                                     |
     | :8080                               | :3000
     |                                     |
+----+----------+                +---------+-----+
|               |                |               |
|  Angular      |                |  Backend      |
|  (webserver)  |                |  (API server) |
|               |                |               |
+---------------+                +---------------+

将检查对mydomain.com的任何请求。 如果路径包含/api,则请求将被传递到后端。 任何其他请求都将被传递到包含SPA静态文件的Web服务器。

这意味着您需要将/API前缀添加到客户端API调用中(请参见https://angular.io/guide/build#proxying-to-a-backend-server)

注意:您可以使用子域而不是路径来实现相同的功能(mydomain.com/api将变成api.mydomain.com/)。 您只需要能够在部署中支持它。