Django--cookie(登录用)
一、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(登录用)的更多相关文章
- django cookie与session组件
本文目录 1 会话跟踪技术 2 cookie介绍 Django中操作Cookie Session Django中Session相关方法 Django中的Session配置 CBV中加装饰器 回到目录 ...
- JMeter学习-018-JMeter 配置元件之-HTTP信息头管理器-实现 Cookie 登录
之前写过一篇通过[HTTP Cookie管理器]实现登录态操作的文章,使用时需要配置每个键值对(如下图所示),相对来讲配置比较繁琐.其实,我们也可通过在[HTTP信息头管理器]添加 Cookie 信息 ...
- JMeter学习-012-JMeter 配置元件之-HTTP Cookie管理器-实现 Cookie 登录
前文我们讲过了若何获取登录后的 Cookie 信息,不知如何获取登录 Cookie 的朋友,敬请参阅我之前写的博文:Fiddler-005-获取 Cookie 信息.参阅上篇文章,获取到 Cookie ...
- Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录
1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...
- python3爬虫 - 利用浏览器cookie登录
http://blog.csdn.net/pipisorry/article/details/47980653 爬虫爬网站不免遇到需要登录的问题. 登录的时候可能还会碰到需要填验证码的问题, 有的验证 ...
- python3爬虫 - cookie登录实战
http://blog.csdn.net/pipisorry/article/details/47948065 实战1:使用cookie登录哈工大ACM网站 获取网站登录地址 http://acm.h ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-12基于cookie登录授权认证并实现前台会员、后台管理员同时登录
1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...
- Django cookie相关操作
Django cookie 的相关操作还是比较简单的 首先是存储cookie #定义设置cookie(储存) def save_cookie(request): #定义回应 response = Ht ...
- falsk 与 django cookie和session存、取、删的区别
falsk cookie的存取删需导入from flask import Flask,make_response,request# 存COOKIE的方法@app.route('/setcookie') ...
- vc++使用cookie登录网站
以http://www.idc816.com为例 效果图: 1)先登录获取cookie,再使用cookie获取用户信息 2)记录cookie,关闭程序后重新运行程序,直接获取用户信息 使用Fiddle ...
随机推荐
- 高可用Eureka注册中心配置说明(双机部署)
目 录 1. 高可用EureKa注册中心示意图 2. Eureka实例相互注册配置 3. 微服务注册到Eureka配置 4. 启动步骤及配置成功检查 5. 说明事项 1. 高可用EureKa注册中心 ...
- Java基础10:全面解读Java异常
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- docker-swarm相关命令和注意事项
在k8s出现之后,docker-swarm使用的人越来越少,但在本地集成开发环境的搭建上,使用它还是比较轻量级的,它比docker-compose最大的好处就是容器之间的共享和服务的治理,你不需要li ...
- 【Java基础】【04循环语句&方法】
04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do...while B:循环结构for语句的格式: for(初始化表达式;条件表达式; ...
- leetcode — word-ladder-ii
import java.util.*; /** * Source : https://oj.leetcode.com/problems/word-ladder-ii/ * * * Given two ...
- man帮助文档打印
这里不讨论大家都知道的man重定向的一般常用方法(col处理方法)$ man find | col -b > man_fine.txt [跟着我的思路走]假如您像我一样,直接使用如下命令导出fi ...
- JAVA开发知识之Java的线程
目录 Java多线程讲解 一丶多线程简介 1.进程的概念 2.线程概念 3.Java中多线程Thread类 二丶多线程的创建 1.继承Thread类.重写run方法. 2.实现Runalbe接口. 三 ...
- [十]基础数据类型之Unicode编码简介
编码含义 关于编码的含义,之前也说过,计算机只能存储二进制序列 所以对于字符,保存的时候,需要进行编码为二进制,进行存储 呈现的时候,需要将二进制进行解码,转换成字符的形式 有很多种编码方式,比如 ...
- 易被忽略的Python内置类型
Python中的内置类型是我们开发中最常见的,很多人都能熟练的使用它们. 然而有一些内置类型确实不那么常见的,或者说往往会被我们忽略,所以这次的主题就是带领大家重新认识这些"不同寻常&quo ...
- 第60章 设备流交互服务 - Identity Server 4 中文文档(v1.0.0)
该IDeviceFlowInteractionService接口旨在提供用户界面用于在设备流授权期间与IdentityServer通信的服务.它可以从依赖注入系统获得,通常作为构造函数参数注入到Ide ...