cookie和session

HTTP被设计为”⽆态”,也就是俗称“脸盲”。 这⼀次请求和下⼀次请求之间没有任何状态保持,我们⽆法根据请求的任何⽅⾯(IP地址,⽤户代理等)来识别来⾃同⼀⼈的连续请求。
实现状态保持的⽅式:在客户端或服务器端存储与会话有关的数据(客户端与服务器端的⼀次通信,就是⼀次会话

  • cookie
  • session

不同的请求者之间不会共享这些数据,cookie和session与请求者⼀⼀对应。

本篇文章大概说一下Django中两者的一些内容。

一、cookie

cookies 是浏览器为 Web 服务器存的⼀⼩信息。 每次浏览器从某个服务器请求⻚⾯时,都会⾃动带上以前收到的cookie。

我们看一下具体的定义:
Cookie是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息,用于服务器记录客户端的状态。

cookie保存在客户端,安全性较差,注意不要保存敏感信息

典型应⽤:

  • 网站登录
  • 购物车

⽤法:

# 1.设置cookie
HttpResponse.set_cookie(key, value='', max_age=None, expires=None,
path='/', domain=None, secure=None, httponly=False)

#2 获取cookie
HttpRequest.COOKIES.get(key)

# 3删除cookie
HttpResponse.delete_cookie(key, path='/', domain=None)

⼆、session

cookie看似解决了HTTP(短连接、⽆状态)的会话保持问题,但把全部⽤户数据保存在客户端,存在安全隐患,
于是session出现了。我们可以把关于⽤户的数据保存在服务端,在客户端cookie⾥加⼀个sessionID(随机字符串)。其⼯作流程:
(1)、当⽤户来访问服务端时,服务端会⽣成⼀个随机字符串;
(2)、当⽤户登录成功后 把 {sessionID :随机字符串} 组织成键值对加到cookie⾥发送给⽤户;
(3)、服务器以发送给客户端 cookie中的随机字符串做键,⽤户信息做值,保存⽤户信息;
(4)、再访问服务时客户端会带上sessionid,服务器根据sessionid来确认⽤户是否访问过⽹站
联系

2.1 cookie和session的区别与联系

  • 区别
  1. session将数据存储与服务器端 cookie存储在客户端
  2. cookie 存储在客户端,不安全,sess存储在服务器端,客户端只存sesseionid,安全
  3. cookie在客户端存储值有⼤⼩的限制,⼤约⼏kb。session没有限制
  • 联系

session 基于cookie

2.2 session配置

  1. ⾸先在settings.py中有如下配置(系统默认)
INSTALLED_APPS = [
 'django.contrib.sessions',
]
MIDDLEWARE = [
 'django.contrib.sessions.middleware.SessionMiddleware',
 ]
  1. 进行数据迁移,生成session使用的数据库表

2.3 session操作

  • session设置
# 设置session
request.session['username'] = username
return render(request, "a.html", context={
	'code':1,
	'msg':'成功’,
	...
}
  • session获取
def index(request):
 # session获取
 username = request.session.get('username')
 return render(request,'a.html',context=
{'username':username})
  • session删除
  1. clear()
    清空所有session 但是不会将session表中的数据删除
  2. flush()
    清空所有 并删除表中的数据
  3. logout()
    退出登录 清除所有 并删除表中的数据
  4. del req.session[‘key’]
    删除某⼀个session的值
def logout(request):
 request.session.flush()
 return redirect(reverse("index"))
  • session过期时间
req.session.set_expiry(5)

可以参考爬虫里总是用到的Cookie是什么?这篇文章讲的特别具体。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值