Java教程

Koa+Session2+可写不可读(跨域)

本文主要是介绍Koa+Session2+可写不可读(跨域),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

【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代理。

这篇关于Koa+Session2+可写不可读(跨域)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!