Ionic - $http 在移动设备中工作,但在浏览器中显示 CORS 和预检错误
Posted
技术标签:
【中文标题】Ionic - $http 在移动设备中工作,但在浏览器中显示 CORS 和预检错误【英文标题】:Ionic - $http works in mobile device but in browser it shows CORS and preflight error 【发布时间】:2017-03-05 18:56:52 【问题描述】:我正在使用 Ionic 框架开发移动应用程序。我使用 $http(带有自定义标头的 POST)和当我尝试时
离子服务
在浏览器(chrome、firefox、...)中,我得到了
对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'null' 不允许访问。响应的 HTTP 状态代码为 405。
错误。如果我在 chrome 中启用 CORS 插件并尝试相同,我会得到
预检响应包含无效的 HTTP 状态代码 405
错误。
但是当我使用它在我的手机(android/ios)中安装它时一切正常
离子运行安卓
或
离子运行 ios
是什么让我的浏览器限制了 $http 以及为什么我的手机允许它。? Webview和浏览器有区别吗?
信息: - 我正在使用(默认)cordova 插件 - 控制台、设备、闪屏、状态栏、白名单、键盘
请帮帮我。没有正确的理解,我不能简单地构建移动应用程序。提前致谢。
编辑 1
我正在使用 REST API 来处理自定义 Header 请求。到目前为止,我不允许修改 API 代码,因为它在原生 android 应用程序上运行良好很长时间。问题是当我使用 Ionic 时,令我惊讶的是它可以在我的三星 Tab 和 iPad 上运行(当我在没有 livereload 模式的情况下运行时)。
我只想知道,是什么导致我的浏览器受限而我的移动设备工作?
移动设备中的WebView不是有浏览器中的安全策略吗?
【问题讨论】:
你看过这个***.com/questions/33660712/… 【参考方案1】:为什么我的移动应用可以正常运行,但不能在浏览器中运行?
我在 Ionic 项目中使用了 cordova-plugin-whitelist。它实现了用于导航应用程序 web 视图的白名单策略。 check source
要使浏览器正常工作,请在我的 ionic.config.json 中定义代理。但这只是一种解决方法。对于生产,我们应该让服务器明确允许其将 API 调用列入白名单。 check source
【讨论】:
【参考方案2】:@Naveen - Ionic 写了一篇关于浏览器和应用内处理 http 源头的区别的博客论文:http://blog.ionicframework.com/handling-cors-issues-in-ionic
【讨论】:
感谢您的贡献。 :)以上是关于Ionic - $http 在移动设备中工作,但在浏览器中显示 CORS 和预检错误的主要内容,如果未能解决你的问题,请参考以下文章
谷歌标签管理器无法在 Ionic+Angular 应用程序中工作
与 Host App 的自定义键盘扩展通信在设备中不工作但在模拟器中工作