一、会话定义
从打开浏览器访问一个网站,到关闭浏览器结束此次访问,称之为一次绘画
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. identity4 系列————开篇概念

    前言 identity4 其实是openid connection, 那么我们还听说过openid 还有 oauth 2.0 那么下面就介绍一下Oath 2.0和openid 还有 openid co ...

  2. java学习第二天面向对象.day08

    this 在方法中表示调用当前方法的对象,this与主方法中对象类名调用是同理的,也是去指向堆中的地址. this可以解决成员变量和形参的问题 使用构造器还是setter方法 构造器:在创建对象的时侯 ...

  3. ACM模式细节

    牛客网的ACM模式需要自己写输入输出,在这里简单记录一下: 基本答题框架: import java.util.*; public class Main{ public static void main ...

  4. 牛客CSP-S模拟题——十二桥问题

    题面 n <= 50000,m <= 200000,k <= 12 题解 可以从K条边的两端和1结点出发各进行一次O(nlogn)的Dijk,然后就浓缩成了一个最多只有25个点的小完 ...

  5. HTML创建访问加密代码

    在</head>前面加入即可 普通方式 此方法屏蔽F12查看源码但是屏蔽不了Ctrl+U查看源码 解决方式加密html即可注意!解密比较繁琐切记要记住自己设置的密码 <SCRIPT ...

  6. RTSP播放器或RTMP播放器常用的Evnet事件回调设计

    很多开发者在开发RTSP或RTMP播放器的时候,不晓得哪些event回调事件是有意义的,针对此,我们以大牛直播SDK(github)的Android平台RTSP/RTMP直播播放端为例,简单介绍下常用 ...

  7. KingbaseES V8R6 集群环境wal日志清理

    案例说明: 1.对于集群中的wal日志,除了需要在备库执行recovery外,在集群主备切换(switchover或failover)时,sys_rewind都要读取wal日志,将数据库恢复到一致性状 ...

  8. kingbaseES R3 集群配置 SSL

    ​ 案例说明: 本测试是在非生产环境下,在官方没有明确声明支持KingbaseCluster使用ssl的前提下,建议只能在测试环境使用,避免生产环境下直接使用. 数据库版本: TEST=# selec ...

  9. Java开发学习(三十一)----Maven属性与版本管理

    一.属性 1.1 问题分析 如下图所示 你会发现,如果现在想更新Spring的版本,你会发现依然需要更新多个jar包的版本,这样的话还是有可能出现漏改导致程序出问题,而且改起来也是比较麻烦. 问题清楚 ...

  10. 常用的工具函数助力JavaScript高效开发

    前言 日常开发中,面对各种不同的需求,我们经常会用到以前开发过的一些工具函数,把这些工具函数收集起来,将大大提高我们的开发效率. 1.校验数据类型 export const typeOf = func ...