一、会话定义
从打开浏览器访问一个网站,到关闭浏览器结束此次访问,称之为一次绘画
HTTP协议是无状态的,导致绘画状态难以保持
Cookies和session就是为了保持会话状态而诞生的两个存储技术
 
二、Cookies-定义
cookies是保存在客户端浏览器上的存储空间
 
cookies在浏览器上是以键-值对的形式进行存储的,键和值都是以ASCLL字符串的形式存储(不能是中文字符串)
存储的数据带有生命周期
cookies中的数据是按域存储隔离的,不同的域之间无法访问
cookies的内部数据会在每次访问此网址时都会携带到服务器端,如果cookies过大会降低响应速度
 
三、cookies的使用-存储
HttpResponse.set_cookie(key,value='',max_age=None,expiires=None)

key:cookie的名字

valie:cookie的值

max_age:cookie存活时间,秒为单位

expires:具体过期时间

当不指定max_age和expires时,关闭浏览器时此数据失效
 
示例:
删除cookies
HttpResponse.delete_cookie(key) 删除指定key的cookie,如果key不存在则什么也不发生
获取cookies
通过request.COOKIES绑定的字典获取客户端的COOKIES shuj value = request.COOKIES.get(‘key’,‘默认值’)
 
 
四、会话保持-登陆流程
用户在登录页面,点击登录后会把用户名和密码传至后端
服务器拿到账号密码之后,如果验证成功,set cookie
服务器将此次需要存储的cookie发送给前端,接到指令之后浏览器将执行cookie存储
登之后的所有请求,浏览器自动把当前域名下的cookie都发送至服务器
 
五、session
session是在服务器上开辟一段空间用于保留浏览器和服务器交互时的重要数据
针对不同的浏览器,生成不同的存储空间
将不同存储空间的sessionID返给浏览器
然后浏览器将sessionID放在cookie存储
 
使用session需要在浏览器客户端启动cookie,且在cookie中存储session
不同的请求者之间不会共享这个数据,与请求者一一对应
 
 
六、session配置
# 默认配置
1. INSTALLED_APPS列表中添加 django.contrib.session,启用session应用
2. 向MIDDLEWARE列表中添加django.contrib.sessions.middleware.SessionMiddleware,启用session中间件 #可选配置
1.SESSION_COOKIE_AGE
指定sessionID在cookies中保存的时长(默认两周),例如:SESSION_COOKIE_AGE = 60*60*24*7*2 2.SESSION_EXPIRE_BROWSER_CLOSE
浏览器关闭时,session是否失效 默认为False,设置为True浏览器关闭session会失效
PS:Django中的session数据存储在数据库中,所以使用session前确定已执行过migrate
 
七、session的使用
session对象是一个类似于字典的SessionStore类型的对象,可以用类似于字典的方式进行操作
session能够存储如字符串、整型、字典、列表等
1.保存session的值到服务器
request.session['key'] = value
2.获取session的值
request.session['key']
request.session.gey('key',默认值)
3.删除session
del request.sessionp['key']
 
八、Django session的问题
django_session表是单表设计,且该表数据量持续增加【浏览器故意删掉sessionID&过期数据未删除】
可以固定时间执行 python3 manage.py clearsessions【可删除过去的session数据】
 
九、cookies和session对比
cookies存储浏览器,相对不安全
session存储在服务区,相对安全

18.-cookies和session的更多相关文章

  1. 18、cookies与session学习笔记

    本文记录学习 cookies 和 session 的一些小练习和知识点   知识点1    cookies 和 session 的由来   HTTP协议是无状态的协议,因为一旦浏览器和服务器之间的请求 ...

  2. day58_9_24多对多建表手动,form组件(判断类型),cookies和session

    一.多对多建表关系之手动添加. 1.全自动 像之前讲过的一样,我们可以通过manytomanyField的字段来建立多对多关系: class Book(models.Model): title = m ...

  3. django之cookies,session 、中间件及跨站请求伪造

    cookies 和session 为什么会有cookie? ​ 由于http协议是无状态的,即用户访问过后,不留痕迹(状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被 ...

  4. Cookies和Session的区别

    原文:http://www.cnblogs.com/lijihong/p/4743818.html 今天主要学习了Cookies和Session,网络上关于这方面的知识可谓很多,让人眼花缭乱,在此作一 ...

  5. Cookies和Session理论总结

    今天主要学习了Cookies和Session,网络上关于这方面的知识可谓很多,让人眼花缭乱,在此作一个小结.本文不讲多,不讲什么高大上的,只是抛出一块砖,讲三个问题:①什么是Cookies和Sessi ...

  6. Cookies 和session

    一 会话跟踪 在一个会话的多个请求中共享数据,这就是会话跟踪技术 请求登录(请求参数是用户名和密码): 请求转账(请求参数与转账相关的数据): 请求信誉卡还款(请求参数与还款相关的数据). 登录信息在 ...

  7. cookies和session

      基于cookies做用户验证时,敏感信息不适合放在cookies中 cookies保存在客户浏览器端的键值对 session保存在服务器端的键值对(依赖于cookies),把用户浏览器中的cook ...

  8. django cookies与session

    1. cookiies # cookies def login(request): print('COOKIES',request.COOKIES) print('SESSION',request.s ...

  9. 有关cookies与session的详细信息

    COOKIES与SESSION 详细信息参考:https://www.cnblogs.com/linguoguo/p/5106618.html 会话(Session)跟踪是Web程序中常用的技术,用来 ...

随机推荐

  1. 100行代码实现一个RISC-V架构下的多线程管理框架

    1. 摘要 本文将基于RISC-V架构和qemu仿真器实现一个简单的多线程调度和管理框架, 旨在通过简单的代码阐明如何实现线程的上下文保存和切换, 线程的调度并非本文的重点, 故线程调度模块只是简单地 ...

  2. Excel 插入嵌入式图表和独立图表的方法

    描述 嵌入式图表:是一种与当前工作表相同位置的图表,且悬浮在表格之上,不受表格限制,因此称之为嵌入式图表. 独立图表:是独立于当前工作表的图表,打印时,需要单独将其打印出来. 插入独立图表的图文教程: ...

  3. 字节跳动基于ClickHouse优化实践之“多表关联查询”

    更多技术交流.求职机会.试用福利,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 相信大家都对大名鼎鼎的ClickHouse有一定的了解了,它强大的数据分析性能让人印象深刻.但在字节大量 ...

  4. Spring mvc源码分析系列--前言

    Spring mvc源码分析系列--前言 前言 距离上次写文章已经过去接近两个月了,Spring mvc系列其实一直都想写,但是却不知道如何下笔,原因有如下几点: 现在项目开发前后端分离的趋势不可阻挡 ...

  5. C++ 由快排学习到的的随机数等知识

    起: 力扣的912题 数组排序 ,想着先用快速排序来写写,在实际用c++编写的时候,有一些之前没注意到的细节问题造成了一些麻烦. 912. 排序数组 - 力扣(LeetCode) 快排思想 每次以数组 ...

  6. Markdown学习 .md学习

    # Markdown学习## 标题## 二级标题### 三级标题#### 四级标题## 字体**两个*是粗体***一个是斜体****三个是斜体加粗***~~两个~是删除线~~## 引用>走向人生 ...

  7. C++ | unordered_map 自定义键类型

    C++ unordered_map 使用自定义类作为键类型 C++ unordered_map using a custom class type as the key

  8. ThreadLocal源码学习笔记

    系列文章目录和关于我 一丶ThreadLocal结构 每一个Thread对象都有一个名为threadLocals类型为ThreadLocal.ThreadLocalMap的属性,ThreadLocal ...

  9. SpringBoot 配置文件使用详解

    一.创建一个SpringBoot项目 创建 SprintBoot 项目的 2 种方式: 在 https://start.spring.io/ 上创建一个 SpringBoot 项目,然后导入到 IDE ...

  10. 使用kubeoperator安装的k8s 版本1.20.14 将节点上的容器运行时从 Docker Engine 改为 containerd

    官方文档:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/migrating-from-dockershim/change-runt ...