我们目前有一个 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 提供的响应。
我们不知道为什么会发生这种情况,或者如何解决它,但这里有一些相关的事实:
- 当我们使用 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"
}
]
}
当我们尝试通过“firebase deploy”或“firebase serve”部署应用程序时,我们必须在 $http.get 调用中使用 URL 的代理版本。否则,呼叫根本不会到达 GAE 服务器。目前尚不清楚 Firebase 是如何知道将“ionic.project”用于代理映射的。
我们没有使用“Angularfire”,仅使用 Ionic 1.x 打包的标准 AngularJS 库
谢谢你尽你所能的帮助。