0
点赞
收藏
分享

微信扫一扫

cookies与session会话保持技术

自由的美人鱼 2022-02-15 阅读 85

会话:浏览器访问网站到结束访问是一次会话
HTTP协议是无状态的。cookies和session两个存储技术来解决无状态的问题。

1.cookies

是保存在客户端浏览器上的存储空间
在浏览器上以键值对的形式存储,存储的数据带有生命周期,安域存储隔离,不同的域之间无法访问。每次请求时,浏览器会携带cookies到服务器。

1.1 cookies的使用

HttpResponse.set_cookie(key,value='',max_age=None,expires=None)
  • key cookie的名字
  • value cookie的值
  • max_age 存活时间,秒
  • expires 具体过期时间
  • 当不制定max_age或者expires时,浏览器关闭就失效
# 设置cookies
def set_cookies(request):
    resp = HttpResponse('set cookies is ok')
    resp.set_cookie('uuname','nicos',500)
    return resp
# 获取cookies
def get_cookies(request):
    resp = request.COOKIES.get('uuname','null')
    return HttpResponse('cookie is :%s'%(resp))
# 删除cookies
def del_cookies(request):
    resp = HttpResponse('删除COOKIES')
    resp.delete_cookie('uuname')
    return resp

在这里插入图片描述

2. session

在服务器上的空间用于保存浏览器和服务器交互的重要数据,使用session必须先启用cookie,且cookie中存储sessionid,每个客户端都可以有一个独立的session,请求者之间是独立的。sessionid 因为保存在cookies,所以生命周期和他相同
使用sessionn,检查settings.py是否添加
INSTALLED_APPS = [
’django.contrib.sessions’,
MIDDLEWARE = [
’django.contrib.sessions.middleware.SessionMiddleware’,

def set_session(request):
    request.session['uuname']='wwwwww'
    return HttpResponse('set session is ok')

def get_session(request):
    value = request.session['uuname']
    return HttpResponse(value)

settings.py中的相关配置项
1.session_cookie_age:指定sessionid在cookies中保存的时长,默认为2周。
2.session_expire_at_borwser_close=True关闭浏览器就失效
3.Django中的session数据存储在数据库中,所以使用session签,需要确保已经migrate。
4.session是持续单表涉及,且改变数据俩个持续增持
5.可以每晚执行python manage.py clearsessions,该命令删除已经过期的session数据。

举报

相关推荐

0 条评论