前后端分离项目中session获取不到的问题
前后端项目因为存在跨域的问题,所以cookie不能正常传递,因此需要在前端和后端分别设置一下
前端
如果使用axios发送请求,则进行以下设置:
axios.defaults.withCredentials = true;
这样设置,在发送跨域请求时会携带cookie信息
后端
以spring-boot为例,需要在 HttpServletResponse中设置一些响应头
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));//支持跨域请求
response.setHeader("Access-Control-Allow-Methods", "*");
response.setHeader("Access-Control-Allow-Credentials", "true");//是否支持cookie跨域
response.setHeader("Access-Control-Allow-Headers", "Authorization,Origin, X-Requested-With, Content-Type, Accept,Access-Token");//Origin, X-Requested-With, Content-Type, Accept,Access-Token
其它问题
如果用户是通过单点登录的方式登入,即token的获取是后端通过重定向页面的方式以url的形式传递给前端,这时客户端无法正确设置cookie,需要注意session的相关存储操作应该在第一次正式向后端请求时进行处理,否则会造成sessionId前后不一致的问题。
评论区