返回頂部
關閉軟件導航
位置:首頁 > 資訊 > 電商資訊>京東購物小程序cookie方案實踐
京東購物小程序cookie方案實踐

早期為了解決“會話保持”的需求,社區(qū)中出現(xiàn)了「cookie方案」并很終成為W3C標準:當某個網(wǎng)站登錄成功后,客戶端(瀏覽器)收到一個cookie標識(文本)并保存下來,在后續(xù)請求中會自動帶上這個字段,由此Web后臺可以判定是否同一個用戶,從而使“會話”得以延續(xù)。

微信小程序沒有像瀏覽器一樣內(nèi)置實現(xiàn)了cookie方案,需要開發(fā)者自行模擬,而原先京東購物小程序及京喜小程序(現(xiàn)微信一級購物入口)是從微信及手Q購物H5中遷移迭代出來的,也就是說我們不僅要在小程序中模擬一套cookie方案,并且要保持和原業(yè)務對cookie處理邏輯的一致,為此我們將實現(xiàn)方向確定為“基于小程序開放能力,和瀏覽器保持一致”。

微信小程序開放了數(shù)據(jù)緩存Storage和網(wǎng)絡Network這兩種能力,通過這兩套API,我們可以自行DIY一個cookie方案。

PS:本文所有代碼及使用示例都可以在這里找到,閱讀本文時配合實踐,效果更佳。

二、瀏覽器中的cookie

為了保持后端對cookie的處理邏輯和原來的H5一致,小程序的實現(xiàn)需要往瀏覽器看齊。

所以模擬小程序的cookie前,先看看瀏覽器的cookie機制,主要有以下幾個部分:

本地存儲:瀏覽器會在本地分配一塊空間,存儲cookie

請求攜帶:每次發(fā)起請求,都會從本地取出cookie并追加在請求頭上

響應設置:當響應頭有Set-Cookie字段時,需要解析并更新

京東購物小程序cookie方案實踐1

過期時間:每個cookie字段有單獨的過期時間,并且到期會自動清除

讀寫操作:暴露API給前端JS調(diào)用,可進行增刪改查操作

作用域:路徑path、域名domin

編碼:cookie值,在網(wǎng)絡傳輸需要encode,建議存儲也一樣

其它:Only、Secure、SameSite

在瀏覽器的DevTools中,可以看到當前站點下的Cookie明細:

三、小程序中的cookie實現(xiàn)

方案設計

在小程序中模擬Cookie,主要涉及五個部分:

其中我們會重點關注「Cookie基礎庫」的實現(xiàn),另外也會給出「Request基礎庫」的封裝示例。

本地存儲

小程序提供了「數(shù)據(jù)緩存StorageAPI」(可以理解為Web規(guī)范中的LocalStorage),支持存儲“原生類型、Date、及能夠通過JSON.stringify序列化的對象”。

我們可以利用這些API,在Storage中新開一個cookies字段進行存儲:

//存:

wx.setStorageSync('cookies',cookies)

//?。?

wx.getStorageSync('cookies')

復制代碼

其中cookies的「存儲結(jié)構(gòu)」如下:

//cookies=

{

cookie1:{//“很小cookie單元”==>cookieItem

name:'cookie1',//cookie名

value:'xxx',//cookie值

expires:'Fri,17Jan202008:49:41GMT'//過期時間,使用GMT(格林威治標準時間)格式

}

},

復制代碼

上面的cookie1便是一個“很小cookie單元cookieItem”,包含了3個字段(name、value、expires),是本文中定義的「標準cookie格式」,也是cookie操作的基本單元。

打開【微信開發(fā)工具】的Storage選項卡,可以查看本地存儲的情況:

讀寫操作

京東購物小程序cookie方案實踐2

這部分主要作為“公共基礎庫“的角色,為外部業(yè)務提供增刪改查cookie的API。

1.獲取cookie————getCookie()

京東購物小程序cookie方案實踐3

步驟:從Storage中取出完整cookies==>取出指定name的cookie項==>校驗有效期==>返回值value

實現(xiàn)如下:

functiongetCookie(name=''){

letcookies=wx.getStorageSync('cookies')//try/catch略過

let{value,expires}=cookies[name]||{}

return(name&&expires&&!isExpired(expires))?decodeURIComponent(cookieItem.value):''

}

復制代碼

2.設置cookie————setCookie()

步驟:從Storage中取出完整cookies==>解析入?yún)?=>覆蓋更新==>同步到本地Storage

首先看下本API設計需求:

設置單個/多個cookie

直接傳值/傳cookieItem(Object)

時間格式maxAge/expires

如果您覺得 京東購物小程序cookie方案實踐 這篇文章對您有用,請分享給您的好友,謝謝
文章地址:http://www.meyanliao.com/article/online/7586.html
解放雙手無盡可能,有問題添加天線貓微信
主站蜘蛛池模板: 久久午夜夜伦鲁鲁片无码免费| 亚洲av无码一区二区三区人妖| 亚洲欧洲精品无码AV| 四虎影视无码永久免费| 亚洲AV无码一区二区三区久久精品| 蜜臀亚洲AV无码精品国产午夜. | 日日摸日日踫夜夜爽无码| 久久青草亚洲AV无码麻豆 | 男人av无码天堂| 不卡无码人妻一区三区音频| 久久精品无码精品免费专区| 国产精品无码一二区免费| 精品无码人妻夜人多侵犯18| yy111111少妇影院里无码| 亚洲aⅴ无码专区在线观看| 亚洲av中文无码乱人伦在线r▽ | 黑人无码精品又粗又大又长 | 亚洲精品无码鲁网中文电影| 亚州AV综合色区无码一区| 日日麻批免费40分钟无码| 中文无码伦av中文字幕| 永久免费av无码网站大全| 在线观看成人无码中文av天堂 | 亚洲AV永久无码精品一区二区国产| 亚洲成无码人在线观看| 亚洲AV无码久久精品蜜桃| 中文字幕无码乱人伦| 粉嫩高中生无码视频在线观看| 精品久久久久久无码人妻| 特级小箩利无码毛片| 亚洲AV无码精品蜜桃| 精品无码一区二区三区在线| 日韩精品久久无码中文字幕| 色欲狠狠躁天天躁无码中文字幕| 国产精品免费无遮挡无码永久视频| 一夲道无码人妻精品一区二区| 国产成人无码一二三区视频| 国产精品无码av在线播放| 国产aⅴ无码专区亚洲av| 国产乱子伦精品无码码专区 | 亚洲一区AV无码少妇电影|