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

Posted

技术标签:

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

我尝试在 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/… 【参考方案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。

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

【讨论】:

以上是关于如何在 Android 上的 Ionic Framework 中执行跨域 http 请求?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase + Ionic + Cordova s​​ignInWithRedirect 重定向到 Android 上的 localhost

调用GET HTTP时android上的ionic3错误

JDK 1.8 在 ionic cordova build android 上的要求检查失败

如何识别 ionic 和 ios 上的 401 和 408(超时)错误?

Ionic 3.x:iOS 上的推送通知不起作用(适用于 Android?) Ionic Native Plugin Push

Android Opentok 上的 Ionic 3 Angular 5 应用程序崩溃