之前翻译过一篇<<彻底解决ionic项目中跨域问题>>的文章,有小伙伴反应在ionic2中有时不正常工作。于是我自己试了一下,确实不管用。然后去谷歌找了一下解决方案,找到了一个临时的解决方法。
问题原因
app-scripts中bug导致的, (0.0.46) 和以后版本,已经修复了bug。
app-scripts 在哪里?
//package.json
"devDependencies": {
"@ionic/app-scripts": "0.0.47",
"typescript": "2.0.9"
},
这里我的版本是0.0.47,运行正常,浏览器中也能正常访问,看下面。
我怎么操作?
- 如果你的版本低于0.0.46,请修改为(0.0.47),然后执行
npm install
,然后ionic serve
尝试。 - 如果你的版本已经是(0.0.47),请执行
npm install
,然后ionic serve
.尝试 - 如果仍然不行,请修改为(0.0.46),然后
npm install
,尝试ionic serve
。出现错误再改回(0.0.47)->npm install
->ionic serve
参考的ionic官方论坛
https://forum.ionicframework.com/t/proxy-settings-not-working/70673/4
关于ionic开发中代理问题的一个更简单的解决方法
既然同源策略仅仅在浏览器中调试的时候会出现,我们可以从浏览器的角度想办法,禁用浏览器的CORS。如果你用谷歌浏览器,去谷歌应用商店中搜索这个扩展程序“Allow-Control-Allow-Origin”
,安装后,就可以禁用CORS了,不需要费劲去程序中设置代理了。
如图,关闭就能禁用CORS了。
总结
ionic2因为刚刚发布不久,所以升级可能会比较频繁,伴随着升级,必然会出现一些小bug。不过不用怕,还是应该相信google团队的开发能力的,肯定会有人在论坛中提出issue,基本上会在下个小版本中解决问题。
最后说一下系统和环境版本,不同版本可能情况会不同
Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.4
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.47
ios-deploy version: 1.9.0
ios-sim version: 5.0.11
OS: macOS Sierra
Node Version: v5.11.1
Xcode version: Xcode 8.2.1 Build version 8C1002
发现和解决的时间 : 2016-12-28 13:00