微信小程序中cookie的使用
配合另一篇文章的 微信小程序 wx.request 封装 使用。
在小程序中,异步请求wx.request
最终调用的是微信内的异步请求方法,因此,小程序的不会存在自身内部的 cookie 逻辑。因此,如果请求需要使用 cookie 的话,需要我们自行插入wx.request
的 headers 中。
下面简述一下我在项目中对 cookie 的处理。
- 封装 wx.request,然后在项目中都使用这个封装过的 request 方法
- 在封装的 requst 方法的回调内,执行以下的自定义 setCookie 方法。
- 在封装的 requst 方法的 headers,插入本地存储的 Cookie 内容(setCookie 方法内存至本地的 Cookie 数据)
1 | header: { |
- setCookie 方法内容如下, 这里为了方便,使用了 lodash,可自行使用原生 js
1 | const setCookie = (data) => { |
上面的 cookie 处理过程为:
- 判断
reponse
中的header
里面是否有Set-Cookie
字段 - 取出
Set-Cookie
的内容,遍历key=value
的 Cookie 内容,推入一个数组 Neri,同时去除path=|domain=|samesite=|max-age=
这几个不需要用的字段(不去除也可以,不影响) - 去除本地存储内的
Cookie
字符串,定义一个Cookie
对象,将;
号隔开的Cookie
字符串分割成元素key=value
的数组并将key
和value
一一放入本地Cookie
对象中(这一步是为了用新的Cookie
中的somekey=somevalue
覆盖本地的旧Cookie
中somekey=somevalue
) - 遍历新的
Cookie
数组,key=value
用=
号分割成key
和value
,设置 Cookie 对象中的key
为这个新的value
,这一步会覆盖相同的key
的value
,达到更新Cookie
的效果 - 遍历
Cookie
对象,存储成一个key=value
,多个key=value
用;
号隔开,得到最后所需的Cookie
字符串,并存入本地Storage
,在下一次请求时,则从本地Storage
中读取这个Cookie
字符串带入到header
中进行请求
完结,撒花
微信小程序中cookie的使用