首页 > 解决方案 > $http.get 使用 Ionic v1 和 Firebase 托管返回 index.html

问题描述

我们目前有一个 Ionic v1 项目,它调用作为 Google App Engine 应用程序实现的 API。此 Ionic 应用程序与 Ionic 服务、PhoneGap 一起运行,并在部署到 Android/iOS 时运行。

我们现在正在尝试使用 Firebase 托管部署到网络。

最初的 HTML/JS 代码都可以正常运行,直到我们到达对 Google App Engine 的 $http.get 调用。然后发生的事情是请求到达 GAE 服务器并在那里正确处理并发送回响应。但在客户端代码中,response.data 属性是 Firebase 应用程序的 index.html 的内容,而不是 GAE 提供的响应。

我们不知道为什么会发生这种情况,或者如何解决它,但这里有一些相关的事实:

  1. 当我们使用 PhoneGap 或通过 Google Playstore 在设备上运行应用程序时,我们访问 GAE 的 URL 与我们从浏览器访问 GAE 的 URL 相同。但是,当我们通过“ionic serve”运行应用程序时,我们必须使用代理来解决 CORS 问题。我们所做的是在 Ionic 代码中指定一个简化的 URL,然后在一个名为“ionic.project”的文件中提供该简化 URL 到 GAE 实际 URL 的映射,该文件如下所示:

{ "name": "proxy-example", "app_id": "", "proxies": [ { "path": "/api", "proxyUrl": "http://cors.api.com/api" } ] }

  1. 当我们尝试通过“firebase deploy”或“firebase serve”部署应用程序时,我们必须在 $http.get 调用中使用 URL 的代理版本。否则,呼叫根本不会到达 GAE 服务器。目前尚不清楚 Firebase 是如何知道将“ionic.project”用于代理映射的。

  2. 我们没有使用“Angularfire”,仅使用 Ionic 1.x 打包的标准 AngularJS 库

谢谢你尽你所能的帮助。

标签: angularjsfirebasegoogle-app-engineionic-v1

解决方案


推荐阅读