cookie<------>session

什么是cookie:

      保存在浏览器上的一组键值对.

为什么有cookie:

      http协议是无状态,每次请求都是无关联的,没办法保存状态.使用cookie保存状态.

cookie的特性:

         1.由服务器让浏览器进行设置的

      2.浏览器有权不设置

      3.下次访问时自动携带响应的cookie

Django中的操作:

       设置:

          1,设置普通cookie

            response.set_cookie(key,value,max_age=5,)

          2,设置加密cookie

            response.set_signed_cookie(key,value,max_age=5,salt='xxx')

            key(键)

            value(值)

            max_age=None(超时时间)

            salt='xx'(要加密的盐)

            path='/'(路径,/表示根路径,根路径的cookie可以被任何url的页面访问)

            domain=None, Cookie生效的域名

            secure=False, https传输

            httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)

       获取:

          1,获取未加密的cookie(两种)

            request.COOKIES[ke]

            request.COOKIES.get(key)

          2,获取加密的cookie

            request.get_signed_cookie(key,salt='xxx',default=' ')

            default: 默认值

       删除:

          response.delete_cookie(key)

什么是session:

      保存在服务器上的一组键值对.-----(依赖于cookie)

为什么有session:

        1.cookie保存在浏览器本地,不安全

        2.cookie有长度限制,个数限制.

Django中的操作:

        设置:

          request.session[key] = value  (存在修改,不存在添加)

          request.session.setdefault(key,value)  (存在不修改,不存在添加)

          request.session.set_expiry(5)  (设置超时时间)

        获取:

          request.session[key]

          request.session.get(key)

        删除:

          del request.session[key]

        request.session.flush() 删除所有的session信息和cookie

        request.session.delete()   删除所有的session信息,不删除cookie

        其他:

          request.session.exists("session_key")       ----/检查会话session的key在数据库中是否存在

          request.session.set_expiry(value)    设置会话Session和Cookie的超时时间

                如果value是个datatime或timedelta,session就会在这个时间后失效。
                如果value是0,用户关闭浏览器session就会失效。
                如果value是None,session会依赖全局session失效策略。

        配置:

           from django.conf import global_settings,settings   # 全局的配置和局部的配置
          from django.contrib.sessions.backends import db  

原文地址:https://www.cnblogs.com/leo-tail-x/p/10098043.html