所以,我已经从离子克隆了教程app repo。我跑了
ionic start conference sidemenu
然后我添加了一个简单的$ http.get('myserver')(我也试过了ngResources)。
它在chrome上运行得很完美,我得到了所有数据但是在角度上我只有空数据和404状态在我试图做的任何请求。
注意:我尝试使用托管服务器和本地服务器。两者都在Android上失败。 Server是node.js REST API。
控制台上没有打印任何内容,因此请求甚至无法到达服务器。
有没有人经历过这个或者可以告诉我如何调试使用Ionic构建的Android应用程序?
编辑1:我不知道你为什么需要它,但这里是
$http.get('http://server.com/route').success(function (data) {
//handle success
}).error(function (data, status) {
// handle error
});
答案 0 :(得分:87)
事情是Cordova 4.0.0有一些重大变化:
重大变化 [...] - 白名单功能现在通过插件(CB-7747)提供 白名单已得到增强,更安全,可配置 现在,框架支持设置Content-Security-Policy (请参阅插件自述文件中的详细信息)您需要添加新的 cordova-plugin-whitelist插件遗留白名单行为仍然存在 可通过插件获得(虽然不推荐)。
所以我安装了Cordova Whitelist plugin。并添加了
<allow-navigation href="http://*/*" />
在我的config.xml
文件中。
答案 1 :(得分:1)
就我而言,问题出在cordova-plugin-whitelist
插件上。我刚刚删除了插件并添加了它。通过添加此代码还启用了所有请求
<access origin="*" />
中的config.xml
。请找到以下命令:
您需要使用以下命令删除现有插件:
ionic cordova plugin rm cordova-plugin-whitelist
然后只需使用以下命令将其添加:
ionic cordova plugin add cordova-plugin-whitelist
希望有帮助。
答案 2 :(得分:0)
你应该在本地内容,当cordova编译是一个 www 文件夹时,它们是资产和其他文件夹,你实现了apk或同等的iOS
即
<img src="assets/images/{your-file-name}">
答案 3 :(得分:0)
如果以前的解决方案不适用于离子3。
谢谢@rickie最后一个真正的解决方案,三天的痛苦!!!现在还可以转到\platforms\android\CordovaLib\src\org\apache\cordova\engine\SystemWebViewClient.java
并对此行发表评论:
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
try {
// Check the against the whitelist and lock out access to the WebView directory
// Changing this will cause problems for your application
/* if (!parentEngine.pluginManager.shouldAllowRequest(url)) {
LOG.w(TAG, "URL blocked by whitelist: " + url);
// Results in a 404.
return new WebResourceResponse("text/plain", "UTF-8", null);
}*/
CordovaResourceApi resourceApi = parentEngine.resourceApi;
Uri origUri = Uri.parse(url);
// Allow plugins to intercept WebView requests.
Uri remappedUri = resourceApi.remapUri(origUri);
if (!origUri.equals(remappedUri) || needsSpecialsInAssetUrlFix(origUri) || needsKitKatContentUrlFix(origUri)) {
CordovaResourceApi.OpenForReadResult result = resourceApi.openForRead(remappedUri, true);
return new WebResourceResponse(result.mimeType, "UTF-8", result.inputStream);
}
// If we don't need to special-case the request, let the browser load it.
return null;
} catch (IOException e) {
if (!(e instanceof FileNotFoundException)) {
LOG.e(TAG, "Error occurred while loading a file (returning a 404).", e);
}
// Results in a 404.
return new WebResourceResponse("text/plain", "UTF-8", null);
}
}