Django框架基础之COOKIE
Posted 柳姑娘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django框架基础之COOKIE相关的知识,希望对你有一定的参考价值。
cookie:
a. 保存在浏览器端“键值对”
b. 服务端可以向用户浏览器端写cookie
c. 客户端每次方请求时,会携带cookie去
服务端给浏览器发送cookie:
obj=redirect(‘‘)
obj.set_cookie()
obj.set_signed_cookie(key,value,salt=‘‘,)
服务端从浏览器获取cookie:
request.COOKIE.get(‘key‘)
request.get_signed_cookie()
cookie: key, 键
value=‘‘, 值
max_age=None, 超时时间 以秒为单位
expires=None, 超时时间
path=‘/‘, cookie生效的路径,/表示根路径,根路径的cookie可以被任何url的页面访问
domain=None, cookie生效的域名
secure=False, https传输
httponly=False 只能http协议传输,无法被javascript获取(不是绝对,底层抓包可以获取到也可以覆盖)
应用: a 投票
b 用户登录
1 在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更加安全。 2 Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。 3 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http的连接很简单,是无状态的,... 4 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 5 要比http协议安全
利用cookie做用户验证:
1 def login(request): 2 if request.method==‘GET‘: 3 return render(request,‘login.html‘) 4 else: 5 username=request.POST.get(‘username‘) 6 passwd=request.POST.get(‘passwd‘) 7 if username==‘alex‘ and passwd==‘123‘: 8 obj=redirect(‘/classes/‘) 9 # obj.set_cookie(‘ticket‘,‘dfsgtrhfgtd‘,max_age=‘10‘) #最大时效 ‘一个月免登陆’ 10 obj.set_signed_cookie(‘ticket‘,‘123‘,salt=‘666‘,max_age=10) #ticket=123:1dNbYh:Y3vofyscBVHMEOmld_Y7k-_iTjg 11 return obj 12 else: 13 return render(request,‘login.html‘)
1 #cookie验证装饰器函数 2 def login_later(func): 3 def wrapper(*args): 4 5 print(args[0]) #<WSGIRequest: GET ‘/classes/‘> 6 7 # ticket = args[0].COOKIES.get(‘ticket‘) 8 ticket=args[0].get_signed_cookie(‘ticket‘,salt=‘666‘) 9 if not ticket: 10 return redirect(‘/login/‘) 11 else: 12 return func(*args) 13 return wrapper
以上是关于Django框架基础之COOKIE的主要内容,如果未能解决你的问题,请参考以下文章
Django基础---web框架 和 django 介绍3 --model --form---跨站请求---cookie--session--分页--缓存--信号