Session&Cookie 簡介及使用

flaskcookiesession介紹

1、cookie:

在網站中,http請求是無狀態的。也就是說即便第一次和服務器鏈接後而且登陸成功後,第二次請求服務器依然不能知道當前請求是哪一個用戶。cookie的出現就是爲了解決這個問題,第一次登陸後服務器返回一些數據(cookie)給瀏覽器,而後瀏覽器保存在本地,當該用戶發送第二次請求的時候,就會自動的把上次請求存儲的cookie數據自動的攜帶給服務器,服務器經過瀏覽器攜帶的數據就能判斷當前用戶是哪一個了。cookie存儲的數據量有限,不一樣的瀏覽器有不一樣的存儲大小,但通常不超過4KB。所以使用cookie只能存儲一些小量的數據。web

2、session:

sessioncookie的做用有點相似,都是爲了存儲用戶相關的信息。不一樣的是,cookie是存儲在本地瀏覽器,而session存儲在服務器。存儲在服務器的數據會更加的安全,不容易被竊取。但存儲在服務器也有必定的弊端,就是會佔用服務器的資源,但如今服務器已經發展至今,一些session信息仍是綽綽有餘的。flask

3、cookie和session結合使用:

web開發發展至今,cookiesession的使用已經出現了一些很是成熟的方案。在現在的市場或者企業裏,通常有兩種存儲方式:瀏覽器

1、存儲在服務端:經過cookie存儲一個session_id,而後具體的數據則是保存在session中。若是用戶已經登陸,則服務器會在cookie中保存一個session_id,下次再次請求的時候,會把該session_id攜帶上來,服務器根據session_idsession庫中獲取用戶的session數據。就能知道該用戶究竟是誰,以及以前保存的一些狀態信息。這種專業術語叫作server side session安全

2、將session數據加密,而後存儲在cookie中。這種專業術語叫作client side sessionflask採用的就是這種方式,可是也能夠替換成其餘形式。服務器

flask中使用cookiesession

1、cookies:

Flask中操做cookie,是經過response對象來操做,能夠在response返回以前,經過response.set_cookie來設置,這個方法有如下幾個參數須要注意: cookie

key:設置的cookiekeysession

valuekey對應的valuedom

max_age:改cookie的過時時間,若是不設置,則瀏覽器關閉後就會自動過時。ide

expires:過時時間,應該是一個datetime類型。網站

domain:該cookie在哪一個域名中有效。通常設置子域名,好比cms.example.com

path:該cookie在哪一個路徑下有效。

 

使用:

  獲取:request.cookies.get(key, '默認值')

  設置:resp.set_cookie(key, value, max_age=整數)

  刪除:resp.delete_cookie(key)

 

 

 

2、session:

Flask中的session是經過from flask import session。而後添加值keyvalue進去便可。

client side sessionFlask中的session機制是將session信息加密,而後存儲在cookie中。專業術語叫作client side session

server side session:存儲在服務器,客戶端保存的時session_id(經過cookie完成)

使用:

  獲取:session.get(key, '默認值')

 

設置:

     session.permanent = True

     session[key] = value  

刪除:

指定刪除session.pop(key, None)

清空全部session.clear()

相關文章
相關標籤/搜索