前言
跨域问题产生的原因是浏览器出于保证前端数据安全的目的,以域名作为分割,让各个域名之间不能互相访问。而实际情况下我们又有很多场景需要访问不同域的资源,所以就出现了跨域问题。
所以,只有在浏览器中会出现跨域问题,打包成APP以后已经不再是浏览器的环境,就不存在跨域问题。
我们本次要解决的也是Ionic2 APP网页版的跨域问题。
解决方案
- 方案一:后端支持跨域(跨域资源共享CORS)
只需要在后端返回给前端的Http响应头中添加说明,表示该响应支持跨域资源共享,则前端可以在不做任何修改的情况下支持跨域,这也是我觉得处理跨域问题目前最通用的办法。详细的后端写法见:http://www.ruanyifeng.com/blog/2016/04/cors.html
如后端为Java Servlet,则在response中添加支持跨域的协议,如为Spring-Boot,则写法为:
- 方案二:使用代理
如下图,可以在前端ionic.config.json文件中配置请求代理,图中的配置含义为所有path包含“app”的请求都发送到地址“http://localhost:8900/app”,注意后端地址的域名即为http://localhost:8900。
然后用ionic serv启动项目,则也不存在跨域问题。该方法的原理是通过ionic-cli内置的调试server代理了项目发出去的请求,以我们指定的域名发送。