聊一聊web開發中的session和cookie

瀏覽器 cookie 主要保存服務端發送給用戶瀏覽器和頁面調用 document.cookie=? 所設置的小片數據。瀏覽器在磁盤上保存 cookie 而且在下一次請求時發送給相同的服務器。html

session(也稱爲會話),包含 session cookie 和 session content 兩部分,客戶端經過 session cookie 記錄會話標識,服務端經過會話標識找到對應的 session content。mysql

cookie 和 session 的初衷是不一樣,cookie 最初是廣泛使用客戶端存儲方案,session 最初是想維持用戶登陸狀態。session 巧妙的應用了服務端設置Set-Cookie響應頭部的方式和網絡請求攜帶Cookie請求頭部的特性。redis

Cookie的幾種應用場景

  • 會話管理
    用戶登陸狀態、購物車列表等sql

  • 個性化設置
    用戶偏好,用戶主題等mongodb

  • 跟蹤行爲
    用戶行爲分析瀏覽器

Cookie的組成部分

咱們能夠經過控制檯查看到應用cookie內容,控制檯是以表格形式展現:安全

cookie控制檯視圖

  • name服務器

  • valuecookie

  • expires
    過時時間,如國不設置,默認爲Session(瀏覽器關閉後銷燬)網絡

  • domain
    可訪問cookie的域名,支持泛域名的配置(例如 .jaylin.wang)

  • path
    可訪問cookie的path

  • httpOnly
    是否只容許服務端讀取cookie內容

  • secure
    是否加密處理

Cookie使用注意事項

  • 儘可能減小 cookie 中的存儲數據
    因爲 cookie 每次會在請求頭部,大量的 cookie 數據會致使 http 請求的速度。在現代瀏覽器中,咱們能夠首選Web Storage API (localStorage 和 sessionStorge) 和 IndexedDB

  • 不適用 cookie 中保存敏感信息
    雖然cookie支持 Secure 和 httpOnly兩種模式,但瀏覽器不敢保證 cookie 絕對安全。黑客能夠經過XSS注入和CSRF利用cookie中的信息。

Session的補充

服務端 session 默認是存儲在內存之中,可是應用過程當中,咱們也會使用 mysql、redis、mongodb 等存儲方案去持久化 session。

夜以深,這篇對 cookie 和 session 的輕描淡寫到此爲止吧,但願能給Web入門同窗帶來幫助,更但願有深刻理解的朋友多多交流,good night~~

文章持續更新地址:http://jaylin.wang/2017/sessi...

相關文章
相關標籤/搜索