这里依旧有个细节值得提一下:Nodejs的上层一般是nginx,而nginx默认会过滤头信息中不合法的字段(比如头信息字段名包含“_”的),这里在写头信息的时候需要注意。 上文也提到,通过cookie及http头信息传递加密token会有很多弊端;有没有更优雅的实现方案呢? 3、更优雅的架构 首先,我们明确前后端分离的一些基本原则: 后端(Java / PHP )职责: 服务层颗粒化接口,以便前端Nodejs层异步并发调用; 用户状态保存,直播,实现用户权限等各种功能; 前端(Nodejs + Java)职责: Nodejs层完成路由托管及模板引擎渲染功能 Nodejs层不负责实现任何SESSION和数据库功能 我们提到,前端Nodejs层不负责实现任何SESSION和数据库功能,但有没有可能把后端缓存系统做成公共服务提供给Nodejs层使用呢?想想感觉前端整条路都亮了有木有?!这里先挖一个坑,后续慢慢填。 4、延伸 这里再顺便提一下,新架构下的XSS防御。 犹记得,在狼厂使用PHP的年代,经常被安全部门曝出各类XSS漏洞,然后就在smaty里添加各种escape滤镜,但是添加之后发现竟然把原始数据也给转义了。 当然,现在更多要归功于各种MVVM单页面应用:使得前端完全不需要通过读取URL中的参数来控制VIEW。 不过,还有一点值得一提:前后端分离框架下,路由由Nodejs控制;我自己要获取的后端参数和需要用在业务逻辑的参数,在主观上前端同学更好把握一些。 所以, 在koa(服务端) + Vue.js(前端)架构下基本不用顾虑XSS问题(至少不会被全安组追着问XSS漏洞啥时候修复)。 总结 要不学PHP、看Java、玩Python做全栈好了? 最后 文中提到的链接,大家可以通过”阅读原文“查看。 微信小程序,你上车了吗? (责任编辑:本港台直播) |