我正在使用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是否具有浏览器中的安全策略?
答案 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