前后端分离解决session跨域丢失问题

最近在做一个短信的平台,采用前后端分离的形式,前端vue,后端tp5,在登陆的时候出现了一个问题,登陆成功之后,拉取数据的接口在判断登陆时发现获取不到session_id,导致无法验证登陆。

首先排错,在保存登陆信息的时候是可以var_dump出session_id的,这就说明session文件已经生成,但是拉取数据时获取不到session文件,原因是:因为是接口形式的访问,所以接口一定要知道你的登陆和拉取数据是同一个ip地址的请求,才能知道登陆和拉取数据是使用的同一个session文件。
所以我们要在前后端同时进行配置:
前端配置
在request.js文件下
增加withCredentials: true

// 创建axios实例
const service = axios.create({
  withCredentials: true,//跨域请求设置
  baseURL: process.env.BASE_API, // api 的 base_url
  timeout: 5000 // 请求超时时间
})

后端配置
Access-Control-Allow-Credentials 响应头表示是否可以将对请求的响应暴露给页面。返回true则可以,其他值均不可以。

header('Access-Control-Allow-Credentials: true');

Access-Control-Allow-Origin是HTML5中定义的一种解决资源跨域的策略。一般情况下设置为 * ,但是在这种情况下应该填写前端页面的公网地址。例如

header('Access-Control-Allow-Origin: http://127.0.0.1:80880');

这时候再执行登陆完成后,所有的数据接口拉取的请求头中都会携带PHPSESSID,这样服务器就可以知道使用的是哪一个session文件了
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值