zoukankan      html  css  js  c++  java
  • cookie与session

    为什么会有cookie和session

    由于http协议是无状态的,无法记住用户是谁

    什么是cookie

    cookie具体指的是一小段信息,他是服务器发送出来存储在浏览器是上的一组组键值对,下次访问服务器是浏览器会自动携带这些键值对,以便服务器提取有效信息,同时也意味着浏览器其实可以拒绝服务端的"命令", 默认情况下 浏览器都是直接让服务端设置键值对

    cookie工作原理

    cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上Cookie,这样服务器就能通过Cookie的内容来判断这个是“谁”了。

    Django中操作Cookie

    django必会三板斧
    	return HttpResponse()
    	return render()
    	return redirect()
    	
    	变形:
    	obj1 = HttpResponse()
    	return obj1
    	obj2 = render()
    	return obj2
    	obj3 = redirect()
    	return obj3
    		
    	设置cookie
    		obj1.set_cookie()
    	获取
    		request.COOKIES.get()
    	删除
    		obj1.delete_cookie()
    
    

    参数:

    key, 键
    value='', 值
    max_age=None, 超时时间
    expires=None, 超时时间(IE requires expires, so set it if hasn't been already.)
    path='/', Cookie生效的路径,/ 表示根路径,特殊的:根路径的cookie可以被任何url的页面访问
    domain=None, Cookie生效的域名
    secure=False, https传输
    httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
    

    session

    session是保存在服务器上的键值对

    django session默认的过期时间是14天

    操作session

    设置session
    	request.session['key'] = value  # 仅仅只会在内存产生一个缓存
    	"""
    	1.django内部自动生成了随机的字符串
    	2.在django_session表中存入数据
    		session_key          session_data         date
    		随机字符串1              数据1            ...
    		随机字符串2              数据2            ...
    		随机字符串3              数据3            ...
    	3.将产生的随机字符串发送给浏览器 让浏览器保存到cookie中
    		sessionid:随机字符串
    
    	"""  
    获取session
    	request.session.get('key')
    	"""
    	1.浏览器发送cookie到django后端之后 django会自动获取到cookie值
    	2.拿着随机字符串去django_session表中比对 是否有对应的数据
    	3.如果比对上了 就讲随机字符串所对应的数据 取出赋值给request.session
    	   如果对不上 那么request.session就是个空
    	   
    	"""
    		
    django session表是针对浏览器的
    不同的浏览器来 才会有不同的记录
    
    删除session
    	request.session.delete()  # 只删除服务端的session
    	
    	request.session.flush()  # 浏览器和服务端全部删除
    
    
    session也可以设置超时时间
    	request.session.set_expiry(value多种配置)
    		
    	* 如果value是个整数,session会在些秒数后失效。
        * 如果value是个datatime或timedelta,session就会在这个时间后失效。
        * 如果value是0,用户关闭浏览器session就会失效。
        * 如果value是None,session会依赖全局session失效策略。
    
  • 相关阅读:
    linux驱动摸索 --驱动框架初始化(结合韦东山视频教程)
    LWIP的移植笔记
    linux命令大全
    Linux中断(interrupt)子系统之一:中断系统基本原理
    Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解
    Linux下PCI设备驱动程序开发 --- PCI驱动程序实现(三)
    VC++定义全局变量及extern用法
    [转]VS 2012环境下使用MFC进行OpenGL编程
    [转]在C++中容易出现的#error No Target Architecture
    实例详解:MFC坐标轴实现
  • 原文地址:https://www.cnblogs.com/aden668/p/11766148.html
Copyright © 2011-2022 走看看