day67 Cookie

一,Cookie的由来

  HTTP请求是无状态的,每一次请求对于服务器端来说都是独立的,对服务器来说,每次的请求都是全新的。

  它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会首前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。

  状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留。会话中产生的数据优势我们需要保存的,也就是说要“保持状态”。因此Cookie就是在这样一个场景下诞生

  1.什么是Cookie

    Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用的信息

  2.Cookie的原理

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

  3.查看Cookie

查看Cookie

扫描二维码关注公众号,回复: 4056284 查看本文章

二,Django中操作Cookie

  1.读取Cookie

#方式一:只取值的时候使用
request.COOKIES['key']
request.COOKIES.get('key')

#方式二:有其他参数时使用
request.get_signed_cookie('key',salt='加密盐',default='当获取不到值时,默认的返回值',max_age:int类型:后台控制的过期时间)

  2.设置Cookie

rep = HttpResponse(...)
rep = render(request, ...)
rep = redirect('/url/')

#第一种
rep.set_cookie(key,value,...)
    #常用参数:
        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获取(不是绝对,底层抓包可以获取到也可以被覆盖)
 
#第二种,参数只有加密盐            
rep.set_signed_cookie(key,value,salt='加密盐')    

  3.删除Cookie

def logout(request):
    rep = redirect("/login/")
    rep.delete_cookie("user")  # 删除用户浏览器上之前设置的usercookie值
    return rep

猜你喜欢

转载自www.cnblogs.com/lianyeah/p/9952739.html