我正在使用Ionic框架开发一个移动应用程序。我使用$http (POST与自定义头),当我尝试
离子为在浏览器(chrome, firefox,…),我得到
对预飞行请求的响应未通过访问控制检查:请求的资源上没有' access - control - allow - origin '标头。因此,不允许访问原点'null'。响应的HTTP状态码为405.
错误。如果我在chrome中启用CORS插件并尝试相同,我得到
预飞行响应无效HTTP状态码405
错误。
但是当我使用
在我的手机(Android/IOS)上安装它时,一切都正常了ionic run android
或
ionic run ios
是什么让我的浏览器限制$http,为什么我的手机允许它?Webview不同于浏览器吗?
为信息:-我使用(默认)cordova插件-控制台,设备,溅屏,状态栏,白名单,键盘
请帮我一下。没有正确的理解,我不能简单地构建移动应用程序。提前感谢。
编辑1
我使用REST API来处理自定义报头请求。我不允许修改API代码作为现在,因为它是运行良好的原生android应用程序很长一段时间。问题是当我使用Ionic时,令我惊讶的是它在我的三星Tab和IPad上工作(当我在没有肝脏负荷模式的情况下运行时)。
所有我想知道的是,是什么导致我的浏览器限制和我的移动设备工作?
WebView在移动设备上没有像浏览器一样的安全策略吗?
为什么我的手机应用程序运行良好,但不能在浏览器?
我在Ionic项目中使用cordova-plugin-whitelist。它实现了导航应用程序webview的白名单策略。检查来源
要使浏览器工作,在我的ionic.config.json中定义代理。但这只是一种变通。对于生产,我们应该让服务器允许它显式地将API调用列入白名单。检查源
@Naveen - Ionic写了一篇关于浏览器和应用内处理http源头的区别的博客文章:http://blog.ionicframework.com/handling-cors-issues-in-ionic