all right,Cookie🍪 和 Session 并不是 Python 中特有的东西,只是我在学习 Django 框架的时候才搞清楚了其工作方式,所以记录在此。
在和学长写项目的过程中,只是有所了解,并不知道这是哪块小饼干,什么味道。
一直在用 GitHub,发现 GitHub 可以好久不用登陆,今天搞清楚了 Cookie 和 Session 的方式后打开 GitHub 看了下,明白liao~
先说下状态保持吧。HTTP 协议是无状态的,下一次去访问一个页面并不知道上一次对这个页面做了什么东西。
所以就需要双方(浏览器和服务器)写一些小纸条记着。Cookie 和 Session 就是这两个人写的小纸条。
Cookie
Cookie 是由服务器生成,存储在浏览器端的一小段文本信息。
Cookie 的特点:
- 以键值对方式进行存储;
- 通过浏览器访问一个网站时,会将浏览器存储的跟此网站相关的所有 Cookie 信息在请求的时候发给该网站的服务器;
- Cookie 是域名安全的;
- Cookie 是由过期时间的,如果服务器不指定,默认关闭浏览器之后 Cookie 就会过期。
Django 设置和读取 Cookie:
1 | """views.py""" |
Django 用户登录案例,Cookie 保存用户名:
1 | """views.py""" |
1 | <!-- login.html --> |
Session
Session 类似于我们老家镇子上的超市的做法。
我办了一张会员卡,会员号是我的手机号,每次我买完东西结账小姐姐总会问:“有会员嘛?会员号多少?(手动陕西话)”。我说:xxxxxx。
我的会员信息保存在小姐姐他们的电脑上,她给了我会员号。
Session 的特点:
- Session 存储在服务端,以键值对进行存储的;
- Session 依赖于 Cookie,唯一的标识码保存在 cookie 中;
- Session 也是有过期时间,如果不指定,默认是两周过期。
Django 设置和获取 Session:
1 | """views.py""" |
记住用户登录状态:
1 | """views.py""" |
1 | <!-- login.html --> |
应用场景
cookie:记住用户名之类的,安全性要求不高用。
session:涉及到安全性要求比较高的数据用。