从部署在 GCP 上的反应式应用中点击烧瓶 RESTful API
Hit a flask RESTful API from reactive app deployed on GCP
我正在尝试在无法启用 public IP 的 Google 云 VM 实例上部署反应式应用程序。响应式应用程序根据用户输入点击 flask RESTful API 个端点。
应用和参数:
- Flask 应用程序(主机 = '0.0.0.0',端口 = 5000)
- 响应式应用程序(主机 = '0.0.0.0',端口 = 3000)
问题:我尝试在同一 VM 实例上托管 Flask 应用程序,但反应式应用程序无法访问 API 端点。
工作(仅限本地):当反应式应用程序和烧瓶应用程序在本地 运行 时,(本地)API 端点被命中。
不工作:
- 我尝试在 GCP 上部署应用程序并转发反应式 (http://localhost:3000) 和 flask 应用程序 (http://localhost:5000),但没有命中 flask 应用程序
- 我 运行 在本地(在笔记本电脑上)反应式应用程序并端口转发了烧瓶应用程序。令人惊讶的是,本地反应式应用程序能够访问 GCP 上的 API 端点。但是 objective 是让 GCP 应用程序点击 RESTful API
- 我为主机尝试了不同的值('localhost'、'127.0.0.1')并重复了 1、2
Flask 调试器没有记录 API 调用。不幸的是 Chrome 的网络日志不跟踪从响应式应用程序发送到 RESTful API 的请求。因此,我无法从反应式应用程序获取有关请求的更多信息。
当两者都部署在 GCP VM 实例上时,是否有办法从反应式应用程序中点击 RESTful API?我可以将 flask 应用程序移动到另一个 VM 实例,但是 public 无法启用 IP 并且无法修改防火墙规则。
注意:不是this question的重复,因为public无法启用IP.
请验证以下内容:
- 确保 GCP 防火墙允许流量。
- 验证 VM 实例中的本地防火墙也允许流量;检查
sudo netstat -tanp
端口实际打开并绑定到 0.0.0.0/0 或实例的内部 IP。
@GagandeepT 的回答将提供初步诊断以检查是否正确指定了主机和端口。我终于弄清楚了潜在的问题——代理正在重定向所有的 http 和 https 流量,即使 API 调用在技术上是 'local'.
我正在尝试在无法启用 public IP 的 Google 云 VM 实例上部署反应式应用程序。响应式应用程序根据用户输入点击 flask RESTful API 个端点。
应用和参数:
- Flask 应用程序(主机 = '0.0.0.0',端口 = 5000)
- 响应式应用程序(主机 = '0.0.0.0',端口 = 3000)
问题:我尝试在同一 VM 实例上托管 Flask 应用程序,但反应式应用程序无法访问 API 端点。
工作(仅限本地):当反应式应用程序和烧瓶应用程序在本地 运行 时,(本地)API 端点被命中。
不工作:
- 我尝试在 GCP 上部署应用程序并转发反应式 (http://localhost:3000) 和 flask 应用程序 (http://localhost:5000),但没有命中 flask 应用程序
- 我 运行 在本地(在笔记本电脑上)反应式应用程序并端口转发了烧瓶应用程序。令人惊讶的是,本地反应式应用程序能够访问 GCP 上的 API 端点。但是 objective 是让 GCP 应用程序点击 RESTful API
- 我为主机尝试了不同的值('localhost'、'127.0.0.1')并重复了 1、2
Flask 调试器没有记录 API 调用。不幸的是 Chrome 的网络日志不跟踪从响应式应用程序发送到 RESTful API 的请求。因此,我无法从反应式应用程序获取有关请求的更多信息。
当两者都部署在 GCP VM 实例上时,是否有办法从反应式应用程序中点击 RESTful API?我可以将 flask 应用程序移动到另一个 VM 实例,但是 public 无法启用 IP 并且无法修改防火墙规则。
注意:不是this question的重复,因为public无法启用IP.
请验证以下内容:
- 确保 GCP 防火墙允许流量。
- 验证 VM 实例中的本地防火墙也允许流量;检查
sudo netstat -tanp
端口实际打开并绑定到 0.0.0.0/0 或实例的内部 IP。
@GagandeepT 的回答将提供初步诊断以检查是否正确指定了主机和端口。我终于弄清楚了潜在的问题——代理正在重定向所有的 http 和 https 流量,即使 API 调用在技术上是 'local'.