前文:【python socket编程】—— 4.实现redirect函数
cookie
的实现很简单,在服务器返回的响应中,header
里增加Set-Cookie
,浏览器接受到Set-Cookie
中的value
,下次访问这个网站的请求中就会带上这个cookie
。编写一个增加cookie
的函数:
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
就知道当前用户是登陆状态的。
显然,直接在cookie
里写用户的username
是不安全的。我们可以把username
存在session
里,假设session
是一个字典,用户登录验证成功后,随机生成一个长的字符串session_id
作为key
,username
作为value
存入session
中,然后把session_id
作为cookie
返回给浏览器,浏览器下次请求时候带上的cookie
内容为这个session_id
,我们去session
里取对应的value
即可。