以前拜读过以前拜读过nightire发表的一片名为“先后分离架构的探索之路”的文章,也在提问中提到文章中不明白的内容,昨天有幸跟一位朋友聊起来如何使用反向代理解决跨域问题,通过他的指导我本身实践,终于测试成功了,把结果分享一下。前端
后端开发API接口,部署在开发服务器上,前端开发静态页面部署在前端开发服务器上
前端JS中须要经过AJAX异步请求API的数据,因为二者分布在两台服务器中,因此这个请求存在了跨域nginx
方法一:
前端开发完成之后,将前端工程文件经过某些方法直接拷贝到后端服务器上,使二者处于同一台服务器,解决跨域。
问题:
这样作致使前端不能时时调试本身的逻辑,还要依赖于后端的环境segmentfault
方法二:
前端在本身的服务器上模拟后端API的数据
问题:
这样作前端不只要写本身的内容,还要额外编写后端的测试数据,增长工做量并且不能直接知晓API的各类实际返回结果。后端
书归正传,下面说说如何使用反向代理解决跨域问题api
我用的是nginx,可使用其余相同功能的软件替换,好比我在本地开启nginx监听80端口,本地服务器跑8080端口,远程API服务器在10.10.10.10上跨域
经过在nginx的配置文件,在location里把常规路径直接指向本地8080,把API请求路径指向远程服务器地址服务器
本地访问localhost/常规地址,经过nginx的反向代理,请求会转到localhost:8080这台服务器上,代码里请求数据地址为/api则会把请求转到远程PAI服务器上,而整个过程,咱们其实都是在localhost里进行的,既没有跨域名,也没有跨端口。架构
使用反向代理的好处是,开发人员只须要关注本身的环境不须要关注与本身无关的内容,可以更加专一的开发和测试本身的代码,缺点是要熟悉反向代理的环境搭建可能稍微有点超出本身的责任范畴。异步
各类方法都有优缺点,根据本身的实际状况选择合适本身的模式才是王道。测试
注:本文在于抛砖引玉,内容里某些概念或者文辞可能使用不当,仅表明我的理解,若有不当之处还望指出批阅。