Django 之COOKIE session

COOKIE    译:饼干   

session    译:会议

众所周知,http是无状态的,那么在各大网站的使用中,怎么知道你是已经登陆了呢?

其实,这里就用到了一个技术,就是COOKIE。COOKIE其实就是一段存在浏览器本地的不超过4KB的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。

百度百科:https://baike.baidu.com/item/cookie/1119?fr=aladdin

简述:http在请求的过程中会会发送请求头和请求体 ,而请求头中,会包含COOKIE发送给服务器,服务器在接收到请求后,按照需求从COOKIE当中取数据,再进行业务处理,最后返回给web前端。

所以,这里,我们可以知道,之所以我们登陆了某些网站后,网站知道我们的登陆状态,就是因为有COOKIE可以携带数据访问服务器,让服务器知道我们当前的登陆状态。

当然,记录登陆状态只是一种应用场景,COOKIE还有其他的应用,比如保存一些数据呀,比如账号密码,是否记住密码等等。

而此时问题来了,如果用本地存储密码,对于安全行较高的某些场景,比如网银等,我们是不要把密码等敏感信息存在本地的,所以我们需要将这些信息存在服务器。

session就产生了,session是存储在服务器上的,技术上需要做的就是将每一个请求对应一个session_id,然后将session_id通过COOKIE传递给客户端,客户端在下次访问时,COOKIE携带着session_id提交,

服务器通过查询session_id对应的一个名称(Name)、一个值(Value),取到需要的数据,再进行业务处理,最后返回给客户端。

使用语法:

COOKIE的设置

response.set_cookie(key, value,[args])

response是Httpresponse  render  redirect产生的response响应对象

相关参数:

  • key:cookie的key值

  • value:cookie的value值

  • max_age: 超时时间就是在浏览器缓存中保留多少时间 单位是s 例子:10s

  • expires:作用于max_age类似如果值输入一个数字代表几天,如果输入具体时间格式为2019-9-12代表这天失效

  • path /代表全部生效 ,/aa/表示只在aa所在的域生效

  • domain: 域名表示cookie只在某个域名生效

  • secure: 对于cookies里面数据进行加密,默认为 flase为http协议,加密为ture为https协议

  • httponly: true 代表不能使用js获取cookie 通过JS获得cookies我们可以在f12里输入document.cookie获得

COOKIE的读取:

request.COOKIES.GET(key)

request.COOKIES['key']

COOKIE的删除:

response.delete_cookie('key')

del request.COOKIES[key]

 

 

session:

设置,修改
request.session['key'] = 'value'

获取
request.session.get('key')

删除
request.session.clear() # 清空的是值
request.session.flush() # 键和值一起清空
del request.session['key'] # 删除指定数据

request.session.set_expiry('value') # 过期时间设置 

 

posted on 2019-10-24 00:00  匆匆过客23  阅读(128)  评论(0编辑  收藏  举报