osx php session 超市_php写接口session实现app跳转网页保留用户信息

php写接口app端跳转网页用户信息如何获取,本文写一种使用session实现方式。

app端登录,后端返回session_id app跳转网页时携带session_id ,直接设置到herder头request请求中。如图:

43bd325cf4f7?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

由于接口域名和wab的域名不一致,所以需要后端设置herder头允许跨域请求:

$allow_origin = array(

'http://192.168.1.31:8888',

'http://192.168.1.22:8888'

);

if(in_array($origin, $allow_origin)){

header('Access-Control-Allow-Origin:'.$origin);

}

直接设置 header('Access-Control-Allow-Origin:'."*");也可以。

这样在wab端通过getCookie可以获取session_id ,wab端请求接口同理携带该参数就可以,(但是前端同学设置请求头Cookie不允许,报错这个字段是关键字不能被设置,只能在后台找原因了)

查看console输出 会发现一个问题:

“Access-Control-Allow-Headers 列表中不存在请求标头 XXXXXX”【IE】,

request header field xxxxxx is not allowed by Access-Control-Allow-Header【chrome】

在后端 设置 herder头 Access-Control-Allow-Headers 参数

header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization, x-cookie, Cookie");

遇到这个问题 只有通过修改服务器端来完成,举例:需要设置 requesttype这么一个自定义头,那么 你需要在 服务端里面 将header('Access-Control-Allow-Headers:x-requested-with,content-type,requesttype'); 同学们自行体会吧 这种语法就是根据“,”分割 自己需要设置什么头,必须要在 服务端请求的响应头里面设置好,不然客户端永远永远提交不上去!

结果还是不行,前端设置不能设置request头转给你的Cookie!

43bd325cf4f7?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

只能想其他办法,前端在请求头中用一个x-cookie的参数来发送 PHPSESSID ,后台接受接口判断不为空设置session就ok了

if(isset($_SERVER['HTTP_X_COOKIE']) && !empty($_SERVER['HTTP_X_COOKIE'])){

session_id($_SERVER['HTTP_X_COOKIE']);

session_start();//开启session会话

}

这样就可以通过使用session来进行app和wab的通讯,还有很多办法,比如token之类的,session是最简单的办法

前端在访问接口时会发送一个OPTIONS请求。。。这是为啥?

1、获取服务器支持的HTTP请求方法;

2、用来检查服务器的性能。例如:AJAX进行跨域请求时的预检,需要向另外一个域名的资源发送一个HTTP OPTIONS请求头,用以判断实际发送的请求是否安全。

这就了解了,因为是跨域 所以会先发送一个 OPTIONS请求来验证后端是否支持这次请求,在后端做如下操作就可以:

if($_SERVER['REQUEST_METHOD'] == 'OPTIONS'){

$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';

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

header('Access-Control-Allow-Headers', "content-type");

header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization, x-cookie, Cookie");

header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');

exit();

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值