如何在 React 中通过 GCP App Engine 上的 HTTP 获取外部 API



我正在托管一个在GCP云计算上运行apache2的Ubuntu VM。我有一个 FQDN/域名,可以从我的浏览器点击,为我提供我的反应应用程序所需的数据。

我的反应应用托管在 GCP 应用引擎上。我不想为SSL证书付费/处理,所以我试图仅使用http访问两个端点。当我在本地托管我的 react 应用程序时,它通过 https 连接,并且无法通过 http 从"不安全"源检索数据。

当我尝试在 gcloud 应用程序引擎中加载 React 应用程序并通过 http 连接时,它拒绝将请求加载到我的 API,因为它来自外部资源。我试图使用 http 中间件为 api 设置代理。但我也有这方面的问题。

该应用程序是一个简单的跳棋游戏,并且 api 是为敌方玩家返回一个动作。 下面是调用 api 的行:

fetch('http://ai.checkers-bot.com/bot/?board=' + api_load + '&player=Bb')
.then(res => console.log(res))
.catch(console.log);

我已经尽可能多地研究了这个主题,但是每个解决方案似乎都是您正在运行后端节点服务的情况,并通过该服务将其代理到本地运行的api。我需要通过http在不同的域上点击我自己的api。

您需要从 HTTPS 端点fetch()

问题在于您的浏览器对混合内容的政策。 (请注意,此问题与 React、Apache、GCP 或 CORS 无关。 这是关于HTTP网络安全)

可能的解决方案,按工作量最少的顺序排列:

  • 在 GCE 虚拟机前面使用 HTTPS 负载均衡器来处理 SSL。 Google Cloud Platform 使设置变得非常容易。 这是一个教程。
  • 将所有代码移植到 App Engine 并摆脱 Apache 服务。 这样,您的 Web 应用将通过 HTTPS 向其自己的域发出请求。
  • 如果您不想将代码移植到 App Engine,请将您的网络应用fetch到 App Engine,并向您的 GCE VM 发出 App Engine 代理请求。

相关内容

最新更新