如何在 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 signInWithRedirect 重定向到 Android 上的 localhost
JDK 1.8 在 ionic cordova build android 上的要求检查失败
如何识别 ionic 和 ios 上的 401 和 408(超时)错误?
Ionic 3.x:iOS 上的推送通知不起作用(适用于 Android?) Ionic Native Plugin Push