【session2】组件:
安装命令:npm install koa-session2
GitHub地址:https://github.com/Secbone/koa-session2
具体使用方式,可见于GitHub地址下的readme.md文件。
注意事项:
基于koa的vue项目,在后端使用session时存在跨域问题,会造成 session配置正确但是读写失败的情况。无论是在浏览器读写还是在Redis,Mongodb读写session都会存在问题,最常见的就是session可写不可读的情况。
针对这种问题的排查方式是:
1.使用postman测试,检测访问对应接口时候,返回的结构体的Cookie是否有值,且和配置的一致。
2.postman访问不存在跨域问题,当返回结果无误时,则可排除配置问题。
3.使用程序访问时,在session的读(get函数)写(set函数)值处跟踪,看看能不能读到值,以排查此问题。
4.建议使用自定义的session存储,如redis。
解决方式:
1.当我们在发送跨域请求时,session是无法设置浏览器端的, ctx.session 也就获取不到值,
request 的 credentials属性表示是否允许其他域发送cookie,
该属性有3个值:
omit: 默认属性,不允许其他域发送cookie
same-origin: 只允许同域发送cookie
include: 总是允许发送cookie
服务端需要设置‘Access-Control-Allow-Credentials’:true
参考:https://www.cnblogs.com/QxkWeb/p/10021097.html(未测试)
2.在前端程序中设置代理,我的项目是以Vue作为前端,则在Vue的配置文件vue.config.js中设置了proxy代理。