在一个项目中做验证码功能,一开始思路是:前端发送请求让后端处理,使用了hutools验证码工具类,直接使用输出流进行输出到页面中,于是使用seesion进行存储验证码,在校验验证码输入是否正确时,再发送请求给后端,获取sesson中存储的数据,一遍遍测试之后发现每次的存储的数据都为空(项目提前做好了跨域)。
上网搜索相关资料,有使用拦截器,过滤器或者使用Interceptor的方法,但总结下来就是配置跨域,但项目中已经有了跨域,但没有使用跟其余人一样的做法。试了很多次才发现不是跨域问题,而是前端配置问题。
一、 跨域
如果你遇到了这种问题首先就是先做好跨域,可参考SpringBoot和Vue跨域Session不是同一个怎么解决(不用Redis)_springboot 不使用 redis_Keeling1720的博客-优快云博客
二、前端配置
项目使用的是vite来构建vue,使用axios发送请求,所以首先在自己封装的请求中设置好前端请求的withCredentials属性为true,让其请求时携带cookie。特别提醒:typescript与JavaScript无特大差异,以下代码都可直接使用
可放main.js或main.ts或http.ts中