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失效策略。
    
  • 相关阅读:
    【原】Go语言及Web框架Beego环境无脑搭建
    Treap学习笔记
    读书笔记--Head First PMP目录
    Linux操作系统常用命令合集——第四篇-文件系统权限操作(5个命令)
    Linux操作系统常用命令合集——第三篇-系统管理操作(25个命令)
    Linux操作系统常用命令合集——第二篇- 用户和组操作(15个命令)
    路由器与交换机配置——配置文件和系统映像备份与恢复
    路由器配置——密码重置
    交换机配置——端口安全
    路由器与交换机配置——交换机默认网关(实现跨网段telnet)
  • 原文地址:https://www.cnblogs.com/aden668/p/11766148.html
Copyright © 2011-2022 走看看