一、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. 解放双手—Cobbler批量自动化部署多版本系统

    1 Cobbler  介绍 Cobbler 是一个 Linux 服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理 DHCP,DNS 等.Cobble ...

  2. CompletableFuture基本用法

    异步计算 所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法.在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结 ...

  3. Elasticsearch索引原理

    转载 http://blog.csdn.net/endlu/article/details/51720299 最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计 ...

  4. ELK-logstash案例实战之读取日志输出到elasticsearch

    简介:从日志文件中读取日志,输出到elasticsearch集群中 $ cd /home/es/logstash-/config $ vim test3_es.conf $ cd /home/es/l ...

  5. ELK-ElasticSearch索引详解

    1.使用_cat API检测集群是否健康,确保9200端口号可用: curl 'localhost:9200/_cat/health?v' 注意:绿色表示一切正常,黄色表示所有的数据可用但是部分副本还 ...

  6. RocketMQ源码分析之RocketMQ事务消息实现原理上篇(二阶段提交)

    在阅读本文前,若您对RocketMQ技术感兴趣,请加入 RocketMQ技术交流群 根据上文的描述,发送事务消息的入口为: TransactionMQProducer#sendMessageInTra ...

  7. 算法工程师想进一步提高竞争力?向TensorFlow开源社区贡献你的代码吧

    算法工程师为什么也要向社区贡献代码? [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] “做算法的人要熟悉算法框架源码吗?算法工程师难 ...

  8. [SDOI2018] 战略游戏

    Description 给定一张 \(n\) 个点 \(m\) 条边的无向联通图,共有 \(q\) 次操作,每次操作选择一些点作为关键点,询问有多少个点满足删去该点及与其相邻的边后,至少有两个关键点不 ...

  9. Springboot 系列(二)Spring Boot 配置文件

    注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 不管是通过官方提供的方式获取 Spring ...

  10. [转]GitLab-CI与GitLab-Runner

    本文转自:https://www.jianshu.com/p/2b43151fb92e 一.持续集成(Continuous Integration) 要了解GitLab-CI与GitLab Runne ...