cookie和session 以及Django中应用

 

cookie和session机制

cookie和session机制

  cookie机制采用的是在客户端保持状态的方案。作用就是为了解决HTTP协议无状态的缺陷所做的努力。

  session机制采用的是一种在客户端与服务器之间保持状态的解决方案。由于采用服务器端保持状态的方案在客户端也需要保持一个标识,

      所以session机制可能需要借助于cookie机制来达到保存标识的目的。session还提供了方便管理全局变量的方式。

      session 是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分哪个用户的session

cookie和session内容

  cookie内容主要包括:key, value, 过期时间,路径和域。路径和域一起构成了cookie的作用范围。

  cookie的使用是由浏览器按照一定的规则在后台自动发送给服务器的,浏览器检查所有储存的cookie,

  如果某个cookie的作用范围大于等于将要请求的资源所在位置,将cookie附在请求资源的HTTP请求头上发给服务器。

  cookie的生命周期跟过期时间相关,如果不设置过期时间,成为回话cookie,保存在内存中,关闭浏览器窗口,cookie消失。

  如果设置过期时间,浏览器会把cookie写入硬盘,这些cookie仍然有效,直到超过设定的过期时间。

  存在硬盘上的cookie可以在同一个浏览器不同进程间共享,比如两个Chrome窗口。存在内存的,不同浏览器不同的处理方式。

  session内容,服务器使用类似python字典的 key value的形式存储的,存储session方式很多,数据库,缓存,文件,加密cookie,数据库加缓存。

Django中的cookie

  cookie中的一些参数:

    --  max_age=1,  cookie生效的时间,单位是秒。

    --  expires  具体的过期时间

    --  path= “/”  作用路径 写/代表所有的url都可以访问到cookie 可以指定url

    -- domain= None  None代表当前域名  指定哪个域名以及它下面的二级域名(子域名)可以访问这个cookie

    -- secure = False  Https安全相关

    -- httponly=False  限制只能通过http传输 JS无法再传输中获取和修改

  设置cookie以及获取cookie

# 设置cookie
# 普通设置方式
response_obj.set_cookie("key", "value",expires="time",path="/") # 加盐
# 加盐需要在服务端进行解盐才能查看
response_obj.set_signed_cookie("k","v",salt="gaoxin")
# 获取cookie
# 普通
cookies = request.COOKIES.get("key")
# 加盐
cookies = request.get_signed_cookie("k", salt="gaoxin")

  cookie + session 的工作原理

    -- 1 当用户来访问服务器时,服务端生成一个随机字符串。

    -- 2 当用户登录成功后,把 {sessionID:随机字符串} 加到cookie里发送给浏览器用户。

    -- 3 服务器以发送给客户端cookie中的随机字符串为键,用户信息做值,保存用户信息

Django中的session

  django中session中一些方法:

     注意 :request.session['name'] = 'gaoxin'  默认隐含了通过sessionID找到用户信息那一步,删除也是如此。

# 获取,设置,删除session中数据
# 获取
request.session['key']
request.session.get('key', None) # 不报错 设置一个默认值
# 设置
request.session['key'] = "value"
request.session.setdefault('key', "value")# 存在则不设置
# 删除
del request.session['key'] # 获取所有的键,值,键值对
request.session.keys()
request.session.values()
request.session.items()
request.session.iterkeys()
request.session.itervalues()
request.session.iteritems() # 用户session的随机字符串
request.session.session_key # 清除数据库过期的session
request.session.clear_expired()
# 检查用户session的随机字符串是否在数据库中
request.session.exists("session_key")
# 清除当前用户的所有session数据
request.session.delete("session_key")
# 设置session的过期时间
request.session.set_expiry(value)
# 如果value是个整数 session会在这些秒后失效
# 如果是个datetime类型的 就会在这个时间后失效
# 如果value是0,用户关闭浏览器session就会失效
# 如果value是None,session就会依赖全局session失效策略

  session的配置文件

# 引擎 (存储位置)
SESSION_ENGINE = "django.contrib.session.backends.file"
SESSION_ENGINE = "django.contrib.session.backends.cached_db"
# 缓存文件路径
SESSION_FILE_PATH = "文件路径" # cookie保存在浏览器上的key 即 sessionID = 随机字符串
SESSION_COOKIE_NAME = "gaoxin" # cookie 保存的路径
SESSION_COOKIE_PATH = '/' # cookie保存的域名
SESSION_COOKIE_DOMAIN = None # 是否https传输cookie
SESSION_COOKIE_SECURE = False # 是否只支持http传输
SESSION_COOKIE_HTTPONLY = True # cookie失效日期为600000秒 默认1209600秒
SESSION_COOKIE_AGE = 600000 # 是否关闭浏览器使session过期
SESSION_EXPIRE_BROWSER_CLOSE = False # 如果设置成True 会在每次请求服务器的时候会以新的请求时间向后延期过期时间
# 淘宝一直逛就不会登出 不刷新页面过段时间就自动登出
SESSION_SAVE_EVERY_REQUEST = True
 
 

 

 
Copyright ©2018 GGG_XXX

cookie和session 以及Django中应用的更多相关文章

  1. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  2. cookie和session在Django中的应用

    1 会话跟踪技术 什么是会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而1008 ...

  3. Cookie、Session和Django分页

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  4. COOKIE与SESSION、Django的用户认证、From表单

    一.COOKIE 与 SESSION 1.简介 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. ...

  5. Python 之 Django框架( Cookie和Session、Django中间件、AJAX、Django序列化)

    12.4 Cookie和Session 12.41 cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务 ...

  6. day 62.3 Django基础八之cookie和session

    Django基础八之cookie和session   本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx ...

  7. day 73 Django基础八之cookie和session

      Django基础八之cookie和session   本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 x ...

  8. django中操作cookie与session

    cookie 什么是Cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的 ...

  9. Django中cookie&session的实现

    1.什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie是key-value结构,类似于一个python中的字典.随着服 ...

随机推荐

  1. apache开启验证登录

    对某个目录开启验证登录 <Directory /var/www/html/admin > AllowOverride All Order allow,deny Allow from all ...

  2. 集合总结二(LinkedList的实现原理)

    一.概述 先来看看源码中的这一段注释,我们先尝试从中提取一些信息: Doubly-linked list implementation of the List and Deque interfaces ...

  3. DataSource - 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明

    1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库 ...

  4. npm i 出错

    npm i npm ERR! code ECONNRESET npm ERR! errno ECONNRESET npm ERR! network request to https://registr ...

  5. Metasploit 简单渗透应用

    1.Metasploit端口扫描: 在终端输入msfconsole或直接从应用选metasploit 进入msf>nmap -v -sV 192.168.126.128  与nmap结果一样 用 ...

  6. MySQL 之 MHA + ProxySQL + keepalived 实现读写分离,高可用(二)

    ProxySQL安装 yum/rpm安装 在github或官网上可以下载rpm包,wiki的Getting start章节有详细介绍. cat <<EOF | tee /etc/yum.r ...

  7. SpringMVC的工作流程、组件说明以及常用注解说明

    1. SpringMVC处理流程 2. SpringMVC架构 2.1 框架结构 2.2 框架流程 1. 用户发送请求至前端控制器DispatcherServlet. 2. DispatcherSer ...

  8. Android Studio 加载网络图片

    Android Studio是基于gradle的一个Android开发软件,在引用网络图片的时候需要连接第三方库,这里介绍 引用glide的方法. 一.在github页面搜索glide,点击第一个 二 ...

  9. 三. html&JavaScript&ajax 部 分

    1. 判 断 第 二 个 日 期 比 第 一 个 日 期 大 如何用脚本判断用户输入的的字符串是下面的时间格式2004-11-21必须要保证用户 的输入是此格式,并且是时间,比如说月份不大于12等等, ...

  10. 38.Spring-spring和hibernate整合.md

    目录 1.定义各种类对象 2.创建Hibernate配置文件 3.配置applicationContext.xml 4.注意事项 1.定义各种类对象 package per.liyue.sh.demo ...