因为这个副站本身是和主站的账号系统挂钩的,所以想再建一个系统,整个后台数据是通用的,所以考虑改造之前的server部分,直接把api提取出来项目并提供与外界的接口。筹划了半天,发现“说话便宜,给我看代码”就是这个道理。规划空的时候会有很多胡思乱想,只有真正的编码才会一点一点解决。首先是物理分离。整个server部分直接拿进一个新项目,依赖包干掉前台性能的bower部分和bootstrap。运行并成功。然后就是二级域名的配置,简直是难上加难。先配置nginx,然后不管怎么解析都会报错。和几个朋友商量,朋友说要先在DNS端解析,但是我记得阿里云是不能解析端口的。然后跑到配置页面仔细阅读说明。二级域名:如:mail.example.com或abc.example.com,填写mail或abc;它可以配置!所以添加DNS解析。让朋友测试一下,一定会成功的。之后是实际代码。我还是沿用了之前项目的思路,使用request将项目的/api请求转发到新端口。但是我遇到了很多问题:如果请求转发不区分方法,那么pip的时候就会undefined。区分post后,res.pip(res2)时,forward数据为空。当然res2是有价值的。但是考虑到session的维护,需要传递headers,而不仅仅是res2.text或者body。查找后,果断放弃。。。我把技术方案换成CORS,在api项目中支持跨域和凭证调用,成功!但是一试就会发现问题:session无法维持。参考https://segmentfault.com/q/10...这个答案后,得到了解决方案,NG在调用的时候添加了withCredentials参数。其实StackOverFlow里面有个回答也是这么说的,但是我总觉得NG应该是自带的,我还是觉得理所当然。这样一来,第一波就变了。接下来,首先NG需要在服务中添加一个包,让我的请求自动携带这个配置。其次是数据存储。我上传的图片会放在服务器的根目录下,img.site.com也可以作为数据存储方式吗...?待续。
