cookie ,localStorage 及其他代替方案

cookie 分兩種

  1. 沒(méi)有設(shè)置expires的被稱為會(huì)話cookie , 保存在內(nèi)存中, 瀏覽器窗口關(guān)閉即銷毀
  2. 設(shè)置了expires的cookie 保存在硬盤中, 可以在不同的瀏覽器進(jìn)程中共享

cookie 有這樣幾個(gè)特點(diǎn)

  • cookie 主要作用是保存用戶信息, 比如存好session id 或者 token 用來(lái)和服務(wù)器保持登錄狀態(tài)
  • 設(shè)置httpOnly 保證cookie的安全性, 不被XSS攻擊
  • cookie 因?yàn)槊看蝖ttp請(qǐng)求都會(huì)攜帶, 能精簡(jiǎn)則精簡(jiǎn) 總大小不能超過(guò)4kb
  • cookie 有效期在 sessionUtils工具中設(shè)置為兩小時(shí) 勾選了自動(dòng)登錄則是一周時(shí)間

cookie有以下分類 ( 常見cookie )

  • cookie_connect
    • 94字節(jié) 獲取接口數(shù)據(jù)必須的標(biāo)識(shí) 任何鏈接發(fā)起在app.js經(jīng)過(guò)解密發(fā)送給后端
  • cookie_userip
    • 26字節(jié) 用戶IP, 獲取接口數(shù)據(jù)必須的標(biāo)識(shí) 每次都會(huì)重新獲取 同時(shí)用來(lái)記錄防刷數(shù)據(jù)
  • cookie_tokenkey
    • 79字節(jié) 登錄令牌 判斷是否登錄
  • cookie_userid
    • 18字節(jié) 用戶ID標(biāo)識(shí)
  • cookie_autokey
    • 46字節(jié) 可能設(shè)置為空 是否自動(dòng)登錄

id + token + autokey 共同發(fā)送與服務(wù)器建立session, 每次登錄重設(shè)有效期

  • debug_signal
    • 15字節(jié) 調(diào)試信號(hào)
  • cookie_flag
    • 如果沒(méi)有flag, 正常訪問(wèn)頁(yè)面, 不統(tǒng)計(jì)
  • cookie_cnt
    • 統(tǒng)計(jì)30秒內(nèi) 刷新了幾次

各個(gè)路由里控制廣告浮層的cookie, 均為11字節(jié)左右

  • 首頁(yè)
    • home_ad_fc 廣告浮層 24小時(shí)
    • showIe7_fc IE7瀏覽器提示 24小時(shí)
  • 理財(cái)
    • bill_fc 活動(dòng)彈窗浮層
  • 挖寶藏
    • sundayFc 周一到周日只顯示一次
  • 娛樂(lè)大廳
    • play_ad_fc 廣告浮層

推廣注冊(cè)頁(yè) url : /floor/spread/:id

  • cookie_recoms 18字節(jié) 推廣人的ID 用于注冊(cè)時(shí)發(fā)送
    還有QQ 登錄綁定功能

還有一些其他站點(diǎn)統(tǒng)計(jì)用cookie (未統(tǒng)計(jì))

代替cookie 的方法

1. Etag 可以應(yīng)用于禁用cookie的頁(yè)面

  1. 客戶端請(qǐng)求一個(gè)頁(yè)面(A)渐裂。
  2. 服務(wù)器返回頁(yè)面A,并在給A加上一個(gè)ETag钠惩。 // 告訴瀏覽器要彈窗的截止時(shí)間
  3. 客戶端展現(xiàn)該頁(yè)面柒凉,并將頁(yè)面連同ETag一起緩存。
  4. 客戶再次請(qǐng)求頁(yè)面A妻柒,并將上次請(qǐng)求時(shí)服務(wù)器返回的ETag一起傳遞給服務(wù)器扛拨。 // 把彈窗截止時(shí)間發(fā)送回來(lái)
  5. 正常情況, 服務(wù)器檢查該ETag耘分,并判斷出該頁(yè)面自上次客戶端請(qǐng)求之后還未被修改举塔,直接返回響應(yīng)304(未修改——Not Modified)和一個(gè)空的響應(yīng)體绑警。
  6. 在廣告浮層業(yè)務(wù)上, 判斷是否達(dá)到截止時(shí)間, 如果到了截止時(shí)間, 就重新設(shè)置etag
        var extime = new Date().getTime() + 600000; // 新的過(guò)期時(shí)間, 比如一分鐘后
        var reqTime = req.headers['if-none-match'] || 0;   // 原來(lái)的過(guò)期時(shí)間
        reqTime = Number(reqTime);
        if (reqTime !== 0 && reqTime > new Date().
          res.setHeader('Etag', reqTime);  // 還沒(méi)過(guò)期, 就還設(shè)置原來(lái)的時(shí)間
        } else {
          // 過(guò)期了
          res.setHeader('Etag', extime);
          console.log('設(shè)置etag, 過(guò)期時(shí)間是', extime, new Date(extime).getMinutes(), new Date(extime).getSeconds());
        }

2. 不能徹底清除的evercookie

https://www.npmjs.com/package/evercookie
這個(gè)插件可以把cookie存在各個(gè)地方(大概8個(gè)), 簡(jiǎn)單禁用cookie和清除是不能清除的

3. 每次請(qǐng)求url加一個(gè)參數(shù)控制廣告浮層

4. localStorage 控制廣告浮層

  1. localStorage 僅在瀏覽器端保存, 不主動(dòng)參與和服務(wù)器的通信, 用來(lái)保存登錄表示之類的存在安全隱患
  2. 寫一個(gè)共用js, 進(jìn)入一個(gè)頁(yè)面即取出localStorage循環(huán)遍歷一下對(duì)應(yīng)的key,value
  3. 如果value已經(jīng)過(guò)期, 那么彈窗

未來(lái)應(yīng)用場(chǎng)景

因?yàn)镠TTP是無(wú)狀態(tài)的協(xié)議

即不能把客戶的本次鏈接與上次鏈接產(chǎn)生聯(lián)系,所以我們需要cookie來(lái)存儲(chǔ)上次鏈接會(huì)話中信息的東西

那么一切有關(guān)用戶信息的數(shù)據(jù), 能增強(qiáng)用戶體驗(yàn)的信息, 都有可能存到 cookie 或 localStorage

  • 廣告浮層相關(guān)業(yè)務(wù)
  • 用戶的地理位置
  • 進(jìn)入頁(yè)面后自動(dòng)跳到上次瀏覽的位置
  • 把最大化的窗口變小時(shí)變成用戶手動(dòng)控制過(guò)的窗體寬高信息
  • 用戶上次登錄網(wǎng)站的時(shí)間
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市央渣,隨后出現(xiàn)的幾起案子计盒,更是在濱河造成了極大的恐慌,老刑警劉巖芽丹,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件北启,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拔第,警方通過(guò)查閱死者的電腦和手機(jī)咕村,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蚊俺,“玉大人懈涛,你說(shuō)我怎么就攤上這事∮锯” “怎么了批钠?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)得封。 經(jīng)常有香客問(wèn)我埋心,道長(zhǎng),這世上最難降的妖魔是什么忙上? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任拷呆,我火速辦了婚禮,結(jié)果婚禮上晨横,老公的妹妹穿的比我還像新娘洋腮。我一直安慰自己,他們只是感情好手形,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布啥供。 她就那樣靜靜地躺著,像睡著了一般库糠。 火紅的嫁衣襯著肌膚如雪伙狐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天瞬欧,我揣著相機(jī)與錄音贷屎,去河邊找鬼。 笑死艘虎,一個(gè)胖子當(dāng)著我的面吹牛唉侄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播野建,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼属划,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼恬叹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起同眯,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤绽昼,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后须蜗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體硅确,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年明肮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了菱农。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡柿估,死狀恐怖大莫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情官份,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布舅巷,位于F島的核電站羔味,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏钠右。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一飒房、第九天 我趴在偏房一處隱蔽的房頂上張望搁凸。 院中可真熱鬧,春花似錦狠毯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至寝受,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間罕偎,已是汗流浹背很澄。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留甩苛,地道東北人忙干。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓浪藻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親爱葵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容