小程序跳转 H5 时 cookie 值处理问题

小程序使用 <web-view></web-view> 内嵌 H5,当跳转至 H5 后,校验用户的登录状态是最重要的。

在做手中的项目 b.xx.com 时,需要调用另一个域名下(a.xx.com)的公共地址接口,两处都需要校验用户的登录状态。

最初的做法是:

let cookie='aaaaaa2222fghhhh',
    domain = '.xxx.com';
document.cookie = `sid=${cookie};domain=${domain};path=/`;

这样写发现在 a.xx.com 中获取不到当前 cookie:经排查发现是因为 a.xx.com 服务器没有开启允许跨域访问,开启之后 cookie 就可以拿到了!

在后续的联调中发现,凡是  a.xx.com 下的接口,访问时 request header 里都会带两个参数名相同但是值不同的cookie,导致登录校验失败的情况频繁出现,经过接口请求分析发现是因为 a.xx.com 中服务器中设置的 domain 是 a.xx.com ,而 b.xx.com 中设置的 .xxx.com。domain不一致,导致接口的 response 里会自动带上cookie,所以会出现两个参数名相同的 cookie。

解决方法:将  a.xx.com 的 domain 也设置为 .xxx.com。

posted @ 2018-11-08 21:55  SunLemon  阅读(2657)  评论(0编辑  收藏  举报