首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >离子型Android失败了Cordova白名单的AJAX调用

离子型Android失败了Cordova白名单的AJAX调用
EN

Stack Overflow用户
提问于 2016-03-28 23:58:30
回答 3查看 1.9K关注 0票数 4

有谁知道我是怎么给安卓Ionic应用程序打跨域$http电话的?

我尝试过在这篇文章中提到的建议:离子+角-如何避免"404找不到(从缓存)“后的帖子请求?

我已经设置了Content标记来接受所有内容,但是我的应用程序仍然不允许任何AJAX调用(AngularJS,$http.get)。

代码语言:javascript
复制
<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,错误消息“失败”

(没有细节)。我想打的电话不是https。

在iOS中工作得很好。

示例呼叫:

代码语言:javascript
复制
$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.0.0 Ionic版本: 1.0.0-rc.0 Ionic CLI版本: 1.7.14 Ionic App Lib版本: 0.7.0 ios-部署版本: 1.8.5 ios-sim版本: 5.0.6 OS: Mac OS X El Capitan Node版本: v0.12.2 Xcode版本: Xcode 7.3构建版本7D175

插件:科多瓦-插件-事件,科多瓦-插件-徽章,科多瓦-插件-照相机,科多瓦-插件-联系人,科多瓦-插件-设备,科多瓦-插件-文件传输,科多瓦-插件-图像选择器,科多瓦-插件-inappbrowser,科多瓦-插件-白名单,科多瓦-插件-x-社会共享,科多瓦-插件-x-吐司,de.appplant.cordova.plugin.local-notification,phonegap-插件-推

所有AJAX调用都失败。

所有测试都在真正的三星S4上进行

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-03 21:12:49

这是一个非常不明确的错误,但以下是一些建议,您可以尝试跟踪问题的原因:

  • 如果您的设备有Android <4.4:更新它,使用另一个更新版本的设备,或者使用人行横道对旧版本使用CSP功能。
  • 更新你的离子源
  • 特别是在CSP设置中白名单您的API主机URL。尽管如此,default-src *应该涵盖这一点。您还可以尝试完全删除CSP内容:<meta http-equiv="Content-Security-Policy"> (不推荐用于生产!)
  • 您能从设备上的任何其他应用程序访问API主机(或任何其他URL)吗?如果没有,您可能需要检查测试设备的Wifi连接;)
票数 3
EN

Stack Overflow用户

发布于 2016-04-01 21:10:01

你能在简单的android浏览器上点击url吗?您可以在<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作为标签中的“googleapis.com”。

我可以认为这可能是CORS的问题。如果可能,可以通过修改ionic.project文件并添加一个新属性来尝试吗?

代码语言:javascript
复制
 {
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/

离子,访问-控制-允许来源

离子型应用程序无法将启用cors的服务器与$http连接

http://blog.ionic.io/handling-cors-issues-in-ionic/

同样的问题不在科多瓦身上发生。

希望能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2016-03-31 06:36:32

添加了插件

代码语言:javascript
复制
ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36273196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档