技术饭
thinkphp5.1下ajax跨域请求接口,session公用的解决方法
thinkphp5.1下ajax跨域请求接口,session公用的解决方法,ajax或者app(IOS、安卓)请求接口,php中如果需要登录,则需要设置session,但每一次请求都会重新生成一个session_id,所以session就没法获取跟传递,解决的办法就是生成一个随机数做为session_id,保存这个随机数,每次请求都带上这个随机数,这样每次获取的session就一致了:
1、设置PHP头部
// 指定允许其他域名访问
header('Access-Control-Allow-Origin:*');
// 跨域资源共享
header('Access-Control-Allow-Credentials:true');
// 响应头设置
header('Access-Control-Allow-Headers:x-token,x-uid,x-token-check,x-requested-with,content-type,Host,xmsid');
// 响应类型
header('Access-Control-Allow-Methods:*');
参考:https://www.copylian.com/technology/189.html
2、设置var_session_id,这个值是要在第一步的 Access-Control-Allow-Headers 设置
3、thinkphp设置session的机制是通过$_REQUEST方法获取,所以需要在ajax的时候把 xmsid 参数传给接口
4、接口初始化,这里需要使用到cookie来保存session_id的随机值,保证在session周期内这个值不变(这个很重要)
5、设置获取session的时候要把 xmsid 参数传给接口
文明上网理性发言!