Angularjs 在Ionic中设置CORS

Angularjs 在Ionic中设置CORS,angularjs,ionic,cors,Angularjs,Ionic,Cors,我正在创建我的第一个ionic应用程序,但我正在与cors进行斗争,我在这方面没有很多经验,所以这个问题可能看起来很愚蠢 我没有访问api站点的权限,因此无法在那里更改任何内容。 这是我用来从api站点获取数据的代码。我读到cors只是在使用ionic serve进行测试时出现的一个问题,但我尝试构建android应用程序并将apk传输到我的手机上,但它似乎也不起作用(当然,我也看不到手机上的控制台日志来测试它:) 如果您使用较新版本的Cordova(或最新的Ionic CLI)开发应用程序,则

我正在创建我的第一个ionic应用程序,但我正在与cors进行斗争,我在这方面没有很多经验,所以这个问题可能看起来很愚蠢

我没有访问api站点的权限,因此无法在那里更改任何内容。 这是我用来从api站点获取数据的代码。我读到cors只是在使用ionic serve进行测试时出现的一个问题,但我尝试构建android应用程序并将apk传输到我的手机上,但它似乎也不起作用(当然,我也看不到手机上的控制台日志来测试它:)

如果您使用较新版本的Cordova(或最新的Ionic CLI)开发应用程序,则当应用程序尝试发出网络请求时,您可能会遇到http 404错误

这可以通过以下方法快速解决

您可以在上找到更多文档

解决方案:

在shell/终端中运行以下命令:

ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git
现在只需将属性添加到
config.xml
文件:


可能有很多原因

处理COR意味着配置后端和前端。 在后端,这取决于api运行的web服务器

我认为您不会使用“…您可以通过使用--disable web security标志打开它来禁用它检查cors…”来解决问题

在控制器中只处理http承诺并在服务上移动http请求将是一个很好的实践。 我可以告诉你我为避免CORS飞行前的麻烦做了什么

默认情况下,Angular在$http.defaults.headers.{http\u VERB}中设置头

我的案例是$http.defaults.headers.post,带有“内容类型”:“application/json”。 这种内容类型触发了chrome中的cors。 手动设置“内容类型”并不重要。默认情况下,这是以角度设置的

因此,修复方法是转到你的app.js文件,在.config部分插入你的代码

app.config(['$http',函数($http){
//重置标头以避免选项请求(又名飞行前)
$httpProvider.defaults.headers.post={};

}]);

在尝试了很多解决方案后,运气不佳,最终

cordova plugin rm cordova-plugin-ionic-webview
cordova plugin add cordova-plugin-ionic-webview@latest

解决了我的问题

如果您使用chrome,您可以通过使用--disable web security标志打开它来禁用它检查cors。我不知道爱奥尼亚服务是做什么的,但我认为你应该能够将chrome指向文件系统并让它工作,除非你试图做一些需要设备的东西(仅仅调用web服务不应该是这样)是的,我已经尝试使用chrome扩展来禁用cors,这在我的pc上可以工作,但问题是,它在我的手机上不起作用,我无法获取内容,我认为这是因为脱离了cors。这似乎不起作用,但我在输出中读到“为ios安装”cordova插件白名单,我正在安卓手机上测试它,这是个问题吗?编辑:它在我的android手机上工作,但在爱奥尼亚服务中不工作,对不起,谢谢:)嗯,好的,让我们试试别的。你能把你的设备连接到你的电脑上并用谷歌Chrome进行调试吗?现在我们可以很容易地找出哪里出了问题。也许是别的什么?编辑:很高兴它能工作!不客气。:-)很好,您已经添加了该链接,将来可能会非常需要该链接;)
cordova plugin rm cordova-plugin-ionic-webview
cordova plugin add cordova-plugin-ionic-webview@latest