【问题标题】:How to perform cross-domain http request in Ionic Framework on Android?如何在 Android 上的 Ionic Framework 中执行跨域 http 请求?
【发布时间】:2015-08-10 12:34:07
【问题描述】:

如何在 Android 上的 Ionic Framework 中执行跨域 http 请求?

我尝试在 ionic.project 中设置代理,但没有帮助。以下是我执行请求的方式:

$http.get('http://localhost:8100/getnews/?hashcode=' + hashcode + '').then(function (resp) {
        ...
    }, function (err) {
        ...
    }

这里是 ionic.project:

{
  "name": "...",
  "app_id": "...",
  "proxies": [
      {
        "path": "/getnews",
        "proxyUrl": "http://yukigaru.pythonanywhere.com/getnews/"
      }
    ]
}

它在 Android 上不起作用,总是调用函数 (err) 分支。它可以在一台计算机的浏览器上运行,而不能在另一台计算机的浏览器上运行。

Cordova 5.0.0、Ionic 1.3.20、Android 5.x。

【问题讨论】:

  • 您使用的是 phonegapp 还是 cordova ?如果是这样,请确保正确设置访问源,请参阅:cross origin
  • 您说的是哪个浏览器?铬合金?即?
  • 您使用的是cordova-android平台的版本4还是旧版本?如果使用版本 4,则必须确保项目中有 cordova-plugin-whitelist 插件。
  • 我使用的是cordova 5.0.0。
  • 您可能正在使用cordova 5,但除非您生活在未来,否则我认为您没有Android平台的第5版...所以我的问题是您是否安装并配置了白名单插件?我建议你看看这个页面:blog.nraboy.com/2015/05/…

标签: javascript cordova ionic-framework ionic cross-domain


【解决方案1】:

我最终在我的 Ionic 应用程序中将其添加到作为 JSON API 播放的 PHP 文件(我从 Ionic 应用程序调用):

header('Access-Control-Allow-Origin: *');

所以,如果您控制您的 API 端点服务器并且能够进行类似的更改(您没有提到您使用哪个 API 堆栈?),您应该没问题。 如果有人有更好的用例,请回复...

【讨论】:

    【解决方案2】:

    localhost是“这台机器”,所以它在有服务器的机器上工作,在其他机器上不工作。

    localhost改成有服务器的机器的本地IP,比如192.168.1.X

    【讨论】:

      【解决方案3】:

      如果您尝试在源站之外调用服务,那么您应该在服务器端添加访问控制标头,否则您可以尝试 $http.jsonp(我没有尝试此方法)而不是 $http.get。

      我希望这会对你有所帮助。

      【讨论】:

        猜你喜欢
        • 2019-12-15
        • 1970-01-01
        • 1970-01-01
        • 2012-08-20
        • 2016-04-25
        相关资源
        最近更新 更多