上周一切运行良好,当我在设备上运行应用程序或使用Genymotion进行仿真时,对api的所有调用均正常工作(返回数据或失败,但至少显示了一些东西)。
我在用
ionic run android
我添加以更新全局cordova ionic:
npm install -g cordova ionic
因为所有的$ http请求都没有被处理。当Api仍能正常工作且CORS设置完美时,我没有任何回应。
我发现的唯一方法是使用–livereload或-l选项:
ionic run -l android
我想避免不惜一切代价使用livereload。
我开始使用ionic 1.0.0和cordova lib 4.3.0从头开始创建一个项目。
angular.module('starter.controllers', [])
.controller('AppCtrl', function($scope, $ionicModal, $timeout, $http) {
alert('calling api');
// Create an anonymous access_token
$http
.get(domain+'/oauth/v2/token?client_id='+public_id+'&client_secret='+secret+'&grant_type=client_credentials')
.then(function(response){
alert(response.data.access_token);
});
})
因此,在使用时:
ionic serve
它会正确地警告“调用api”,然后发出响应(该示例为OAuth访问令牌)。
但是在使用时:
ionic run android
它只是在警告“正在调用api”,而似乎没有处理http请求。
有人经历过类似的事情吗?我对此感到非常头疼。
随着Cordova 4.0.0的更新,您将面临无法对RESTful API进行HTTP调用以及加载外部资源(包括其他HTML /视频/音频/图像)的问题。
使用cordova-plugin-whitelist将域列入白名单可以解决此问题。
删除白名单插件(如果已安装):
cordova plugin remove cordova-plugin-whitelist
通过CLI添加白名单插件:
cordova plugin add cordova-plugin-whitelist
然后将以下代码行添加到应用程序的 config.xml中 ,该文件位于应用程序的根目录中:
Reccomended 的文件中:
<allow-navigation href="http://example.com/*" />
要么:
<allow-navigation href="http://*/*" />
和
这个meta
标签在您的index.html
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
此问题的原因:
从适用于Android的更新的Cordova 4.0.0:
改进了白名单功能
您将需要添加新的cordova-plugin-whitelist插件才能继续使用白名单
现在支持设置内容安全策略(CSP),这是将其列入白名单的推荐方法(请参阅插件自述文件中的详细信息)
默认情况下,网络请求在没有插件的情况下被阻止,因此即使允许所有请求,也要安装此插件,即使您使用的是CSP。
此新的白名单已增强为更安全和可配置,但旧版白名单行为仍可通过单独的插件获得(不推荐)。
注意:虽然不是严格意义上的发行版,但cordova-cli创建的最新默认应用程序默认将包含此插件。
我的Android模拟器运行正常,但每次我启动模拟器时都会显示这个错误。 启动AVD仿真程序AVD_for_Nexus_4仿真程序:打开HAX设备失败!HAX不工作,模拟器在仿真模式下运行模拟器:打开HAX设备失败模拟器:模拟器窗口离开视图并重新进入
我的API远程托管,没有使用ssl证书! 我搜索了所有的解决方案,但没有一个解决我的问题
在mac上的android设备上运行ionic应用程序时出错 检查Java JDK和Android SDK版本Android_SDK_ROOT=undefined(推荐设置)Android_HOME=/Users/Felix/Library/Android/SDK(已弃用)JDK 8需求检查失败('1.8.*')!检测到的版本:12.0.2检查您的ANDROID_SDK_ROOT/JAVA_HOM
仿真器已经存在,但当我启动应用程序时,它不工作,请帮助:) 我什么都试过了。 卡尔,扑扑新手。 我遵循了安装指南,并尝试了从其他堆栈流答案的修复,我正在运行Windows8.1单数用户。我试过从命令提示符和在android终端 <***C:\users\callum\first_app>Flutter仿真器 Pixel_2_API_28•pixel_2•Google•Pixel2 API 28 要
我试图运行我的Ionic应用程序在Android设备与cordov-plugin-fcm,但我得到下面的错误,当我尝试安装它()或运行它()。尽管有错误,但该插件仍列在科尔多瓦插件中。 (node:2360)unhandledpromiserejection warning:未处理的promise拒绝(拒绝id: 1): TypeError:无效数据,chunk必须是字符串或缓冲区,而不是对象(n