- 数据mock。
在组建中,通过http模块调用数据接口,只需要在www目录下建立对应的文件,即可完成数据mock。 - 跨域调试。
当我们在数据联调过程中,开发模式(ionic serve或者ionic run -l)下必然涉及到接口跨域(本地url为http://localhost:8100),如果要做跨域设置,则需要在服务器接口响应配置CORS,然而在涉及到cookie传输时,CORS配置不能为*,必须指定特定的域名。这便成了矛盾所在。
我试过通过代理工具charles来对本地url代理到对应作用域下的接口,然而本地服务器的livereload.js总是代理失败。最终通过chrome的启动参数--diable-web-security设置来允许直接跨域接口访问,mac下启动方式如下:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security --user-data-dir
最后的-user-data-dir是chrome49以后的版本要求添加的,否则跨域时无法携带cookie,具体设置方法也可参考chrome浏览器的跨域设置——包括版本49前后两种设置
如果是其他模式,比如发布了apk到手机上进行体验,这种情况下并没有使用本地的server,而是使用的file协议,此时并不存在跨域问题。如果需要在手机上体验并且需要数据mock,则需要建立对应的web服务器,使得数据请求能被访问,以文件的形式返回。