一、cookie产生原因

二、cookie的原理图

三、Django中如何设置/读取/删除cookie

四、Django中如何设置cookie的参数

一、cookie产生原因

HTTP协议的无状态保存:
指的是同一个浏览器给服务器发两次请求,
服务器不知道第二次请求之前是否还发过请求。
每一次访问服务器都认为是新请求。

所以需要对会话进行跟踪,cookie就是会话跟踪技术之一

PS:四种会话跟踪技术
a) URL重写:
URL地址重写的原理是将该用户Session的id信息重写 到URL地址中,以便在服务器端进行识别不同的用户。
URL重写能够在客户端停用cookies或者不支持cookies的时候仍然能够发挥作用。
b) 隐藏表单域:
将用户Session的id添加到HTML表单元素中提交到服务器,此表单元素并不在客户端显示,浏览时看不到,源代码中有。
c) Cookie
d) session

二、cookie的原理图

cookie是具体一个浏览器针对一个服务器存储的key-value

有过期时间,可调,默认是两周

问题来了,服务器是指什么?ip+port 还是域名?

看cookie的原理图:

先看上门图片中的场景,理解好三个问题,就理解了cookie机制:

1、在cookie有效期内,哪怕图中A电脑关机在开机,A电脑的浏览器访问域名y1还是会带这个cookie{is_login:true}
2、在cookie有效期内,A电脑的同一个浏览器访问域名y2不会带上域名y1的cookie,而是y2的cookie
2、如果是新的浏览器,访问这个服务器,会带一个空cookie

三、Django中如何设置/读取/删除cookie

1、设置cookie

def login(request):
  login_success=1
  if login_success:
    # 获取响应体(render或redirect也可以,都是继承的HttpResponse)
    response=HttpResponse("登录成功")
    # 在响应体设置cookie
    response.set_cookie("is_login", True)
    return response
  else:
    return HttpResponse("登录失败")

2、读取cookie

def index(request):
  cookies = request.COOKIES
  # cookies.get("k","")获取不到默认为""
  is_login = cookies.get("is_login")
  if is_login:
    #已登录
  else:
    #跳转到登录页面

3、删除cookie:注销的时候能用到

response.delete_cookie("session_id",path="/",domain=name)

四、Django中如何设置cookie的参数

def set_cookie(self,
key,        #键
value='',     #值
max_age=None,  #超时时间 cookie需要延续的时间(以秒为单位)如果参数是None,这个cookie会延续到浏览器关闭为止。
expires=None,     #超时时间 expires默认None ,cookie失效的实际日期/时间。设置方式datetime.datetime(year=2018,month=5,day=29,hour=14)
path='/',     #Cookie生效的路径,浏览器只会把cookie回传给带有该路径的页面,这样可以避免将cookie传给站点中的其他的应用。
         # “/”表示根路径,根路径的cookie可以被任何url的视图函数获取            
domain=None,    #Cookie生效的域名,你可用这个参数来构造一个跨站cookie。
           #如, domain=".example.com"  表示所构造的cookie对下面这些站点都是可读的:
        #www.example.com 、 www2.example.com 和an.other.sub.domain.example.com
          #如果该参数设置为 None ,cookie只能由设置它的站点读取。
secure=False,     #如果设置为 True ,浏览器将通过HTTPS来回传cookie。
httponly=False    #只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
)

Django--cookie(登录用)的更多相关文章

  1. django cookie与session组件

    本文目录 1 会话跟踪技术 2 cookie介绍 Django中操作Cookie Session Django中Session相关方法 Django中的Session配置 CBV中加装饰器 回到目录 ...

  2. JMeter学习-018-JMeter 配置元件之-HTTP信息头管理器-实现 Cookie 登录

    之前写过一篇通过[HTTP Cookie管理器]实现登录态操作的文章,使用时需要配置每个键值对(如下图所示),相对来讲配置比较繁琐.其实,我们也可通过在[HTTP信息头管理器]添加 Cookie 信息 ...

  3. JMeter学习-012-JMeter 配置元件之-HTTP Cookie管理器-实现 Cookie 登录

    前文我们讲过了若何获取登录后的 Cookie 信息,不知如何获取登录 Cookie 的朋友,敬请参阅我之前写的博文:Fiddler-005-获取 Cookie 信息.参阅上篇文章,获取到 Cookie ...

  4. Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录

    1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...

  5. python3爬虫 - 利用浏览器cookie登录

    http://blog.csdn.net/pipisorry/article/details/47980653 爬虫爬网站不免遇到需要登录的问题. 登录的时候可能还会碰到需要填验证码的问题, 有的验证 ...

  6. python3爬虫 - cookie登录实战

    http://blog.csdn.net/pipisorry/article/details/47948065 实战1:使用cookie登录哈工大ACM网站 获取网站登录地址 http://acm.h ...

  7. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-12基于cookie登录授权认证并实现前台会员、后台管理员同时登录

    1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...

  8. Django cookie相关操作

    Django cookie 的相关操作还是比较简单的 首先是存储cookie #定义设置cookie(储存) def save_cookie(request): #定义回应 response = Ht ...

  9. falsk 与 django cookie和session存、取、删的区别

    falsk cookie的存取删需导入from flask import Flask,make_response,request# 存COOKIE的方法@app.route('/setcookie') ...

  10. vc++使用cookie登录网站

    以http://www.idc816.com为例 效果图: 1)先登录获取cookie,再使用cookie获取用户信息 2)记录cookie,关闭程序后重新运行程序,直接获取用户信息 使用Fiddle ...

随机推荐

  1. MHA非root用户搭建测试

    最近一直在瞎搬砖,最大的感触是运维工作难做.不过废话不多说,最近被分配了一项比较有意思的task,尝试着非root用户搭建MHA并测试下能否成功漂移,以下是两天测试和文档编写的成果,分享给各位看客,欢 ...

  2. HotSpot虚拟机对象相关内容

    一.对象的创建 1.类加载检查 普通对象的创建过程:虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载.解析和初始化 ...

  3. 配置最新版LAMP环境

    本篇文章讲解的是在centos7.3下配置 Apache2.4 + MySQL5.7 + PHP7.1.8 (如果是Nginx请跳过Apache流程继续往下看,所有流程本人已临床验证无数遍,绝无问题) ...

  4. kubernetes进阶之三:Pod

    一:Pod 是什么 Pod是Kubernetes的最重要最基本的概念.它是能够被创建,调度和管理的最小部署单元.一个Pod代表集群中一个运行的进程. 二:Pod的组成 一个Pod由一个特殊的根容器Pa ...

  5. Docker中安装WordPress

    前言 虚拟化技术风靡一时,还不层在生产环境中实践.只能是闭门造车,自己玩一玩了,接触了一下docker最简单的命令,这才自己搭建一个wordpress玩一玩. 安装wordpress之前先把本机的do ...

  6. java_List集合及其实现类

    第一章:List集合_List接口介绍 1).特点       1).有序的: 2).可以存储重复元素: 3).可以通过索引访问: List<String> list = new Arra ...

  7. Java基础:HashMap假死锁问题的测试、分析和总结

    前言 前两天在公司的内部博客看到一个同事分享的线上服务挂掉CPU100%的文章,让我联想到HashMap在不恰当使用情况下的死循环问题,这里做个整理和总结,也顺便复习下HashMap. 直接上测试代码 ...

  8. Linux基础(Ubuntu16.04):安装vim及配置

    1.进入终端  Ctrl + Alt +T 出现终端窗口 2.输入命令: sudo apt-get install vim-gtk 3.验证是否成功 安装完vim后查看命令 vi tab键,就会关联出 ...

  9. 【学习笔记】tensorflow文件读取

    目录 文件读取 文件队列构造 文件阅读器 文件内容解码器 开启线程操作 管道读端批处理 CSV文件读取案例 先看下文件读取以及读取数据处理成张量结果的过程: 一般数据文件格式有文本.excel和图片数 ...

  10. PHP代码片段

    将数组拼接为 table 标签字符串 <?php //判断是否是图片 function isImage($string){ $isImage = false; $pics = ['.png', ...