问题背景
- 项目组分前端组、后台组;
- 前端组负责完成界面开发,交互逻辑;
- 后台组负责提供数据,提供操作接口;
- 前后端通过web service接口通信;
- 在开发过程中,前端和后台的开发工程环境不在同一个域;
- 由于是开发的web是基于浏览器运行,所以数据的请求受同源策略影响;
- 在发布时,前端会打包相关文件,并放入到后台工程,合并为一个域部署;
- 为了解决开发过程中跨域的数据联调,提出如下的临时方案。
设计思路
- 后台临时提供一个登录页面,前端通过该页面输入登录信息,点击登录后,页面打印出登录后的tocken字符串;
- 前端启动本地服务器环境(localhost),目前我们采用webstorm开发环境;
- 通过chrome打开web首页;
- 按F12打开开发工具,增加登录页获取到的tocke到cookie中,约定命名,前端会在每次请求接口时,把该tocke附加在header上;
- 后台收到请求后,判断header里是否有合法tocken,有则完成用户身份认证;
- 关于跨域,由于采用chrome调试,且只需要满足开发调试,所以,简单的采用CORS跨域解决方案即可;
2017年更新
随着对前端部署的深入学习,目前采用的开发方式是:
- 前端通过browsersync 搭建实时同步开发服务器;
- 利用gulp watch检测文件修改后,编译打包文件;
- 跨域采用http-proxy中间件将后台的接口请求转发到指定的内部服务;比如:约定api/*下的所有请求均代理到192.2.2.2:8080服务上.通过后台实现跨域;