【php】ajax请求接口的cookie问题

杨成功
  • 3.6k

场景:比如说现在有两个接口,用户登录接口a,和获取用户信息接口b。浏览器调用完全没有问题,现在要用jq的ajax调用这两个接口,就出问题了。

  1. 先说浏览器。
    我在浏览器输入登录接口a地址,传递参数,登录成功。服务端(php)将我的用户id,用户名等存在session里。接下来请求获取用户信息接口b,服务器直接从session里找到用户信息,返回浏览器,成功!

  2. 再说 ajax。
    我在js里用ajax调用登录接口,返回成功信息,登录成功。同样sesion里存了用户信息。但是我接下来用ajax调用获取用户信息接口b的时候,就出问题了,提示session找不到。

我在控制台里看了下,浏览器登录成功之后,在响应头里会返回set-cookie的信息,下一次请求同一域名下的接口,会自动在请求头中发送cookie,从而获取服务器中session的数据。

在ajax请求的情况下,登录成功同样会在响应头里会返回set-cookie的信息,可是下一次请求同一域名下的接口,却不会自动发送cookie,所以找不到服务器的session数据。

那么问题来了:
我若想拿到session数据,在ajax请求时,是要手动发送cookie吗?如果不是,怎么拿到session数据?

求大神解答!

回复
阅读 6.6k
2 个回答

ajax 请求添加参数 xhrFields: { withCredentials: true },

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

session是依赖cookie的,你服务器中的cookie存到什么地方了?

就算是你把你客户端的浏览器中的cookie传过去了,和服务器中的cookie是否一致啊?

所以说在服务器中村session就是不行的,你只能是用token来做,而且后台存储信息要用redis什么的。

宣传栏