cookie介绍与使用

  • 什么是cookie

    ​ HTTP协议本身是无状态的。什么是无状态呢,即服务器无法判断用户身份。Cookie实际上是一小段的文本信息(key-value格式)。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

  • cookie的机制

    ​ 当用户第一次访问并登陆一个网站的时候,cookie的设置以及发送会经历以下4个步骤:

    客户端发送一个请求到服务器 --> 服务器发送一个HttpResponse响应到客户端,其中包含Set-Cookie的头部 --> 客户端保存cookie,之后向服务器发送请求时,HttpRequest请求中会包含一个Cookie的头部 --> 服务器返回响应数据

  • cookie的属性

    | 属性项 | 属性项介绍 | | :--------: | ------------------------------------------------------------ | | NAME=VALUE | 键值对,可以设置要保存的 Key/Value,注意这里的 NAME 不能和其他属性项的名字一样 | | Expires | 过期时间,在设置的某个时间点后该 Cookie 就会失效 | | Domain | 生成该 Cookie 的域名,如 domain="www.baidu.com" | | Path | 该 Cookie 是在当前的哪个路径下生成的,如 path=/wp-admin/ | | Secure | 如果设置了这个属性,那么只会在 SSH 连接时才会回传该 Cookie |

  • 例子

    • 设置cookie

      def set_cookie(request):
        res = HttpResponse('ok')
        res.set_cookie('key','value')
          return res
      
    • 获取cookie

      def get_cookie(request):
        res = resquest.COOKIES.get('key')
        return HttpResponse(res)
      
    • 删除cookie

      def del_cookie(request):
        res = HttpResponse('ok')
        res.delete_cookie('key')
        return res
      
    • 设置过期时间

      def set_expir_cookie(request):
        res = HttpResponse('ok')
        res.set_cookie('key','value',max_age=60) # 单位是秒
        return res
      

results matching ""

    No results matching ""