node.js - Node + Express Backend:调用第三方API
问题描述
我有 node + express 后端,它由我的角度前端(两个独立的域)调用。在我的后端,我正在对其他第三方 API 进行 API 调用。当我在本地部署它时,我的后端工作正常,但是在将它部署到 aws 时,请求超时(CORS 问题?)。我检查了我的部署问题,它成功部署,并且我能够调用我不调用第三方的端点 - API。我还检查了 API,当我手动或直接从我的前端调用它时它可以工作。
知道可能是什么问题吗?
解决方案
是的,这是一个 CORS 问题。处理此问题的最常见方法是添加一个Reverse Proxy
(例如 Nginx)以拥有一个域,该域既为应用程序提供服务(静态文件)又公开后端(API)。
+----------+
| |
| Client |
| |
+----+-----+
|
| myDomain.com
|
[INTERNET]
|
|
v :80
+--------+-------+
/* | | /api
+----------+ Revese Proxy +---------+
| | | |
| +----------------+ |
| |
| |
| :8080 | :3000
| |
+----+----------+ +---------+-----+
| | | |
| Angular | | Backend |
| (webserver) | | (API server) |
| | | |
+---------------+ +---------------+
任何请求myDomain.com
都会被检查。如果路径包含/api
请求将被传递到后端。任何其他请求将被传递到包含 SPA 静态文件的网络服务器。
这意味着您需要在/api
客户端 API 调用中添加前缀(请参阅https://angular.io/guide/build#proxying-to-a-backend-server)
注意:您可以使用子域而不是路径来实现相同的效果(myDomain.com/api
将变为api.myDomain.com/
)。您只需要能够在部署中支持它。
推荐阅读
- c# - 编写代码以使用 asp.net 将 excel 文件导入数据库的问题
- azure - Azure 应用服务部署槽转换
- sql - SQL查询分组期初余额值
- scala - 推断 lambda 的参数类型(再次!)
- javascript - 跨浏览器:禁用输入字段的不同行为(文本可以/不能复制)
- testing - 范围报告插件不适用于 testng + cucumber
- python - 在控制台中循环写入数字
- java - 如何将视频返回给邮递员
- python - dataframe.mean() 的结果不正确
- reporting-services - SSRS 2016 - 如何计算组中两个值之间的百分比差异?