cookie和session

Posted sun96

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cookie和session相关的知识,希望对你有一定的参考价值。

cookie是保存在客户端(浏览器)的数据

1.获取cookie

request.COOKIES.get(‘key‘)  get形式

request.COOKIES[‘key‘]  字典形式

request.get_signed_cookie(‘key‘,salt=‘sdasdas‘)    加密形式  salt为加密盐

def cook1(request):
    #获取当前已经登录的用户

    v=request.COOKIES.get(username_cookie)   # 获取cookie
 #或者 v=request.COOKIES[‘username_cookie‘]  # 获取cookie
    try:
        v=request.get_signed_cookie(username_cookie,default=RAISE_ERROR,salt=sdasdas)   #获取加密cookie

        print(v)
        if not v:
            return redirect(/xiaoqing/cookie)


        else:
            return render(request,cookie1.html,{current_user:v,})

    except Exception as e:
        return redirect(/xiaoqing/cookie)

 参数:default: 默认值

           salt: 加密盐

           max_age: 后台控制过期时间

2.设置cookie

def cook(request):

    err_msg=""
    if request.method == "GET":
        return render(request,cookie.html)

    if request.method == "POST":

        username = request.POST.get(username)
        p = request.POST.get(password)

        dic = user_info.get(username)
        print(dic)

        if not dic:
            err_msg="用户不存在"
            return render(request,cookie.html,{err_msg:err_msg})

        if dic[pwd] == int(p):

            res = redirect(/xiaoqing/cookie1)
            # res.set_cookie(‘username_cookie‘,username)   #设置cookie   关闭浏览器失效
            # res.set_cookie(‘username_cookie‘,username,max_age=10)   设置cookie失效时间 10秒过期
            import datetime
            current_date=datetime.datetime.utcnow()
            change_date=current_date+datetime.timedelta(seconds=5)
            res.set_cookie(username_cookie,username,expires=change_date)   #到哪个时间失效

            # res.set_signed_cookie(‘username_cookie‘,username,salt=‘sdasdas‘)

            return res
        else:
            return render(request,cookie.html)
ret = HttpResponse(...) 或 ret = render(request, ...)
res.set_signed_cookie(‘username_cookie‘,username,salt=‘sdasdas‘)  #设置加密cookie
ret.set_signed_cookie(key,value,salt=‘加密盐‘,...)
    参数:

        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获取(不是绝对,底层抓包可以获取到也可以被覆盖)

由于cookie保存在客户端的电脑上,所以,JavaScript和jquery也可以操作cookie。 


以上是关于cookie和session的主要内容,如果未能解决你的问题,请参考以下文章

少部分手机浏览器对于COOKIE支持不够导致服务端无法读取session的解决方案

Cookie和Session的工作流程及区别(附代码案例)

cookie和session

cookie和session

cookie和session

会话技术知识点整理(Cookie和Session)