cookie是什么?
- cookie指某些网站辨别用户身份,进行session跟踪而存储在用户本地终端上的数据(通常经过加密)
- cookie由服务器生成,发送给User-Agent(一般浏览器),浏览器会将cookie的key/value保存到某个目录下的文本文件中,下次请求同一网站时就发送该Cookie给服务器(前提:浏览器启用Cookie)
- cookie名称和值可以由服务器端开发自己定义,这样服务器可以用户是否为合法用户以及是否需要重新登录等
- 服务器可以利用cookie包含信息的任意性来筛选并接触性维护这些信息,以判断在Http中传输的状态。
- cookie信息可以在浏览器中直接查看,敏感信息不适合存放。
cookie特点:
- cookie以键值格式存储数据 cookie基于域名安全,不同的域名的cookie不能互相访问
- 当浏览器请求某网站时,会将浏览器存储跟网站相关的所有cookie提交给网站
简单cookie流程图
首次访问,服务器会起个名字,然后以cookie键值对格式返回给浏览器,浏览器保存,再次访问服务器的时候会携带之前返回的cookie信息。
设置和读取代码:
def set_cookies(request):
# 设置cookie
username = request.GET.get("username")
response = HttpResponse('设置cookie')
response.set_cookie('name',username,max_age=60*60) # 设置cookie信息以及有效期限
response.set_cookie("password",'123456',max_age=60*60)
return response
def get_cookies(request):
# 获取cookie键值对数据
print(request.COOKIES)
name = request.COOKIES.get('name') # 获取cookie信息中的name值
pwd = request.COOKIES.get('password') # 获取cookie信息中的password值
response = HttpResponse("name:{0},pwd:{1}".format(name,pwd))
return response
运行结果:
session是什么?
客户端请求服务端,服务端会为这次请求开辟一块内存空间,这个对象便是 Session 对象,存储结构为 ConcurrentHashMap。Session 弥补了 HTTP 无状态特性,服务器可以利用 Session 存储客户端在同一个会话期间的一些操作记录。
django会用数据库来存储session,之前没配置数据库,结果报了个错
session流程
浏览器发送请求,服务器保存username和password然后返回cookie键值对格式数据session_id由浏览器保存,当浏览器再次访问服务器时会携带session_id发送给浏览器,然后可以读取到存储在服务器中的相关数据。
设置和读取代码:
def set_session(request):
# 设置session
user_id = 1
username = '李华'
request.session['user_id'] = user_id
request.session['username'] = username
request.session.set_expiry(value=60*60) # 设置session的有效期单位秒,若为0则表示浏览器关闭时过期
return HttpResponse('set_session')
def get_session(request):
# 获取session
user_id = request.session.get('user_id')
username = request.session.get('username')
response = 'user_id:{0},username:{1}'.format(user_id,username)
return HttpResponse(response)
运行结果
简单来说区别:
session保存在服务器中,不易查看。cookie存储在本地中,易查看
cookie目的可以跟踪会话,也可以保存用户喜好或者保存用户名密码 session用来跟踪会话
参考:https://blog.csdn.net/qq_36894974/article/details/105322171?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161391280516780265460544%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161391280516780265460544&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~hot_rank-1-105322171.first_rank_v2_pc_rank_v29&utm_term=cookie