IoniC语言 $http在移动设备中工作,但在浏览器中显示CORS和预飞行错误



我正在使用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

相关内容

最新更新