SpringBoot + VUE 解决 后台的 session 的 null 的问题

本文主要介绍了前端跨域访问后端接口时遇到的sessionID不一致问题,导致无法获取session内容。解决方案是在vue中全局设置axios的withCredentials为true,允许携带cookie,同时在后端配置WebMvcConfigurer,允许跨域并设置允许携带证书。经过这些处理,确保了跨域请求时sessionID的一致性,从而能正常获取session信息。
摘要由CSDN通过智能技术生成
问题原因

前端跨域访问后端接口, 在浏览器的安全策略下默认是不携带cookie的, 所以每次请求都开启了一次新的会话.
在后台打印sessionID我们会发现, 每次请求的sessionID都是不同的, 既然每次请求都是一个新的会话, 那我们去获取session的时候自然就是null了.

前端处理
  • 在 vue 中所有引入 axios 的地方添加如下代码,允许跨域携带cookie
import axios from 'axios'
axios.defaults.withCredentials = true     // 添加代码:允许跨域携带cookie	
后端处理
  • 新建 WebAppConfig ,实现 WebMvcConfigurer 接口,允许前端跨域
public class WebAppConfig implements WebMvcConfigurer {
    //前端跨域
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")//设置允许跨域的路径
                .allowedOrigins("*")//设置允许跨域请求的域名
                .allowCredentials(true)//是否允许证书 不再默认开启
                .allowedMethods("GET", "POST", "PUT", "DELETE")//设置允许的方法
                .maxAge(3600);//跨域允许时间
    }
}

问题解决, 重启工程后我们再次打印每次请求的sessionID就会发现sessionID是一致的, 当然也就可以获取我们存入session的内容了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值