【php】ajax请求接口的cookie问题
阿神
阿神 2017-05-16 12:03:02
0
2
360

场景:比如说现在有两个接口,用户登录接口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数据?

求大神解答!

阿神
阿神

闭关修行中......

全部回复(2)
黄舟

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

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

巴扎黑

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板