通常使用CORS和代理这两种方式解决跨域,前者是后端进行配置,后者是前端做处理。
代理可解决跨域,即将当前域名下的接口访问转为目标域接口访问,达到跨域访问的目的。
引申出来的问题是,为什么代理转换接口访问是安全的,而浏览器访问出于安全考虑会存在同源策略?
原因是同源策略保护的是用户,而非服务器。
浏览器对于服务器传输的数据是会执行的,这就可能引发对用户的攻击,如XSS攻击等。
而对于服务器来说,数据只是字符串,并不会产生执行的效果,就减少了执行攻击行为。【但是对于数据库来说,还是可能产生代码注入攻击。】
故可用代理进行跨域访问而保证一定的安全性。
一般来说,若前端和后端上线之后是同一个域名,那配proxy比较方便。在开发环境用proxy转发,在产品环境自然就转到真正的接口去了。
如果上线之后不是同一个域名,比如前端是 xxx.com ,后端是 yyy.com 这种情况下,一般让后端配置跨域比较方便。前端通过配置host来切换开发环境和产品环境,这样上线就不用改代码了。