有人知道我如何授予Android Ionic应用程序跨域$http调用的权限吗?
我尝试了这篇文章中提到的建议:离子+角度-如何避免";404未找到(来自高速缓存)";POST请求之后?
我的内容安全元标记设置为接受所有内容,但我的应用程序仍然不允许任何AJAX调用(AngularJS $http.get
)。
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
错误在中
ionic.bundle.js:17746,错误消息"failed"
(没有详细信息)。我尝试拨打的电话不是https。
在iOS中运行良好。
示例调用:
$http.get(AppConfig.apiHost + "/api/user/",
{params: {user_id: target_user_id}})
.success(function (target_user) { // do something})
.error(function (error) { console.log(error)});
下方评论的澄清
这是我的config.xml:https://gist.github.com/metalaureate/6f8237b673dacc1412c0b928b7a3d9e5
Cordova CLI:6.0Ionic版本:1.0.0-rc.0Ionic CLI版本:1.7.14Ionic App Lib版本:0.7.0ios部署版本:1.8.5ios sim版本:5.0.6操作系统:Mac OS X El Capitan节点版本:v0.12.2Xcode版本:Xcode 7.3构建版本7D175
插件:cordova插件应用程序事件,cordova插卡,cordoa插件相机,cordo娃插件联系人,cordova-插件设备,cordo娃-插件文件,cordovan-插件文件传输,cordoval-插件图像选择器,cordov-plugin-inappbrowser,cordo伐-插件白名单,cordoa-plugin-x-socialsharing,cordo-vplugin-x-toast,de.appplant.cordova.plugin.本地通知,phonegap-plugin推送
所有AJAX调用都失败。
所有测试在一个真正的三星S4
这是一个非常不具体的错误,但以下是一些建议,您可以尝试找出问题的原因:
- 如果您的设备具有Android<4.4:更新它,在另一台更新版本的设备上试用,或者在旧的Android版本上使用Crosswalk使用CSP功能
- 更新您的离子源
- 特别是在CSP设置中将API主机URL列入白名单。也就是说,
default-src *
应该涵盖这一点。您也可以尝试完全删除CSP内容:<meta http-equiv="Content-Security-Policy">
(不建议用于生产!) - 您能否从设备上的任何其他应用程序访问API主机(或任何其他URL)?如果没有,您可能需要检查测试设备的Wifi连接;)
你能在简单的安卓chrome浏览器上点击url吗?你可以在googleapis.com元标签后面的标签中添加<meta http-equiv="Content-Security-Policy" content="default-src 'self' https://maps.googleapis.com/ https://maps.gstatic.com/ 'unsafe-inline' 'unsafe-eval'">
,其中"http://your url
"。
我认为这可能是CORS的问题。如果可能的话,你可以尝试在ionic.project文件中进行更改并添加一个新的属性吗
{
2 "name": "app",
3 "app_id": "",
4 "proxies": [{
5 "path": "/api/myurl",
6 "proxyUrl": "http://Your-URL"
7 }]
8 }
并通过路径名而不是url 进行获取请求
$http.get('/api/myurl/')
参考文献:-http://ionicinaction.com/blog/how-to-fix-cors-problems-and-no-access-control-allow-origin-header-errors-with-ionic/
http://ionicinaction.com/blog/how-to-fix-cors-issues-revisited/
IONIC,访问控制允许始发
ionic应用程序无法将启用cors的服务器与$http 连接
http://blog.ionic.io/handling-cors-issues-in-ionic/
现在,同样的问题并没有发生在科多瓦身上。
希望有帮助。
添加了插件
ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git