离子 - $ http适用于移动设备,但在浏览器中显示CORS和预检错误

时间:2016-10-24 04:55:32

标签: http browser ionic-framework android-webview preflight

我正在使用Ionic框架开发移动应用程序。我使用$ http(带有自定义标题的POST)和当我尝试

离子服务

浏览器中的

(chrome,firefox,...),我正在

对预检请求的响应未通过访问控制检查:否' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' null'因此不允许访问。响应的HTTP状态代码为405。

错误。如果我在chrome中启用CORS插件并尝试相同,我正在

预检的响应包含无效的HTTP状态代码405

错误。

但是当我使用

在我的手机(Android / IOS)中安装它时一切正常

离子运行android

离子运行ios

是什么让我的浏览器限制$ http以及为什么我的手机允许它。 Webview与浏览器不同吗?

信息

  - 我正在使用(默认)cordova插件 - 控制台,设备,闪屏,状态栏,白名单,键盘

请在这里帮助我。如果没有正确理解,我不能简单地构建移动应用程序。提前谢谢。

编辑1

我正在使用处理自定义标头请求的REST API。我暂时不允许修改API代码,因为它对本机Android应用程序运行很长时间。问题是当我使用Ionic时,令我惊讶的是它可以在我的Samsung Tab和IPad中运行(当我没有实时加载模式时运行)。

我想知道的是,是什么导致我的浏览器限制我的移动设备?

移动设备中的WebView是否具有浏览器中的安全策略?

2 个答案:

答案 0 :(得分:1)

为什么我的移动应用可以正常工作但不能在浏览器中使用?

我在我的Ionic项目中使用cordova-plugin-whitelist。它实现了用于导航应用程序webview的白名单策略。 check source

要使浏览器正常工作,请在我的ionic.config.json中定义代理。但这只是一个解决方法。对于生产,我们应该让服务器明确允许它将API调用列入白名单。 check source

答案 1 :(得分:-1)

@Naveen - Ionic写了一篇博客文章,讨论浏览器和http原始标题的应用内处理之间的差异:http://blog.ionicframework.com/handling-cors-issues-in-ionic