前文:【python socket編程】—— 4.實現redirect函數html
cookie
的實現很簡單,在服務器返回的響應中,header
裏增長Set-Cookie
,瀏覽器接受到Set-Cookie
中的value
,下次訪問這個網站的請求中就會帶上這個cookie
。編寫一個增長cookie
的函數:python
def add_cookie(cookie=''): header = 'HTTP/1.1 200 OK \r\nContent-Type: text/html\r\n' header += 'Set-Cookie: {}\r\n'.format(cookie) return header
假設用戶登陸驗證成功以後,咱們用add_cookie
將其用戶名username
存入到cookie中返回給瀏覽器,例如承接前文,用戶登陸成功後給其返回一個302
跳轉的響應,咱們在其中再加入cookie
,此時response
以下:編程
HTTP/1.1 302 JUMP Content-Type: text/html Set-Cookie: Harp Location: /
那麼瀏覽器下次請求,request
的header
裏就會帶上Cookie: Harp
這一行了。此時服務端解析request
,根據cookie
就知道當前用戶是登錄狀態的。segmentfault
顯然,直接在cookie
裏寫用戶的username
是不安全的。咱們能夠把username
存在session
裏,假設session
是一個字典,用戶登陸驗證成功後,隨機生成一個長的字符串session_id
做爲key
,username
做爲value
存入session
中,而後把session_id
做爲cookie
返回給瀏覽器,瀏覽器下次請求時候帶上的cookie
內容爲這個session_id
,咱們去session
裏取對應的value
便可。瀏覽器