Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
离子请求只在android上返回404,在Chrome上可以正常工作_Android_Angularjs_Http_Ionic Framework_Ionic - Fatal编程技术网

离子请求只在android上返回404,在Chrome上可以正常工作

离子请求只在android上返回404,在Chrome上可以正常工作,android,angularjs,http,ionic-framework,ionic,Android,Angularjs,Http,Ionic Framework,Ionic,因此,我从爱奥尼亚克隆了教程应用程序repo。我跑 ionic start conference sidemenu 然后我添加了一个简单的$http.get('myserver')(我也尝试过使用ngResources) 它在chrome上运行得非常好,我得到了所有的数据,但在angular上,我只得到了空数据和404状态 注意:我试过使用我的托管服务器和本地服务器。两者在安卓系统上都失败了。 服务器是一个node.js REST API 控制台上没有打印任何内容,因此请求甚至无法到达服务器

因此,我从爱奥尼亚克隆了教程应用程序repo。我跑

ionic start conference sidemenu
然后我添加了一个简单的$http.get('myserver')(我也尝试过使用ngResources)

它在chrome上运行得非常好,我得到了所有的数据,但在angular上,我只得到了空数据和404状态

注意:我试过使用我的托管服务器和本地服务器。两者在安卓系统上都失败了。 服务器是一个node.js REST API

控制台上没有打印任何内容,因此请求甚至无法到达服务器

有没有人有过这样的经历,或者可以告诉我如何调试用Ionic构建的Android应用程序

编辑1:我不知道你为什么需要它,但它在这里

$http.get('http://server.com/route').success(function (data) {
            //handle success
        }).error(function (data, status) {
            // handle error
        });

问题是Cordova 4.0.0中有一些重大变化:

重大变化 [...] -白名单功能现在通过插件(CB-7747)提供 白名单已得到增强,更加安全和可配置 框架现在支持内容安全策略的设置 (请参阅插件自述中的详细信息)您需要添加新插件 cordova插件白名单插件遗留白名单行为仍然存在 通过插件提供(尽管不推荐)

所以我安装了。并补充说

<allow-navigation href="http://*/*" />


在我的
config.xml
文件中。

当cordova compile是一个www文件夹时,您应该提供的本地内容是资产和其他文件夹,供您实现apk或同等iOS

i、 e


在我的例子中,问题在于
cordova插件白名单
插件。我刚刚删除了插件并添加了它。还通过添加此代码启用了任何请求
中的
config.xml
。请查找以下命令:

您需要使用以下命令删除现有插件:

ionic cordova plugin rm cordova-plugin-whitelist
ionic cordova plugin add cordova-plugin-whitelist
然后使用下面的命令添加它:

ionic cordova plugin rm cordova-plugin-whitelist
ionic cordova plugin add cordova-plugin-whitelist

希望有帮助。

如果之前的解决方案对离子3不起作用。 谢谢@rickie终于真正解决了三天的疯狂!!!现在没事了。转到
\platforms\android\CordovaLib\src\org\apache\cordova\engine\SystemWebViewClient.java
,并注释以下行:

公共WebResourceResponse应交互请求(WebView视图,字符串url){
试一试{
//对照白名单检查并锁定对WebView目录的访问
//更改此选项将导致应用程序出现问题
/*如果(!parentEngine.pluginManager.shouldAllowRequest(url)){
w(标签,“被白名单阻止的URL:+URL”);
//结果是404。
返回新的WebResourceResponse(“文本/普通”、“UTF-8”、null);
}*/
CordovaResourceApi resourceApi=parentEngine.resourceApi;
urioriguri=Uri.parse(url);
//允许插件拦截WebView请求。
Uri remappedUri=resourceApi.remapUri(origUri);
如果(!origUri.equals(remappedUri)| |需要特殊的ASSETURLFIX(origUri)| |需要SkitkatContentUrlFix(origUri)){
CordovaResourceApi.OpenForReadResult=resourceApi.openForRead(remappedUri,true);
返回新的WebResourceResponse(result.mimeType,“UTF-8”,result.inputStream);
}
//如果我们不需要对请求进行特殊处理,请让浏览器加载它。
返回null;
}捕获(IOE异常){
如果(!(e FileNotFoundException实例)){
LOG.e(标记“加载文件时出错(返回404)”,e);
}
//结果是404。
返回新的WebResourceResponse(“文本/普通”、“UTF-8”、null);
}
}

请添加一些代码,说明您的服务以及如何使用angular来称呼它。谢谢。我搜索这个解决方案已经两天多了。我不明白,如果访问源没有定义,为什么Cordova没有抛出异常。我发现我还必须添加一个内容安全策略元标记,正如我所说的,因为它给了我明确的方向,我需要的推动,修复工作,但显然仍然必须调整它,使其不与通配符完全一致。显然是出于安全原因,这对我很有帮助。谢谢非常感谢。救了我一天。