cookie和session

当客户端访问时,服务端会为客户端生成一个 Cookie键值对数据,通过 Response响应给到客户端。当下一次客户端继续访问相同的服务端时,浏览器客户端就会将这个 Cookie值连带发送到服务端

Cookie值存储在浏览器下,一般在你的浏览器安装目录的 Cookie目录下,我们也可以通过F12或者各种浏览器的开发者工具来获取到

因为 cookie是保存在浏览器中的一个纯明文字符串,所以一般来说服务端在生成 cookie值时不建议存储敏感信息比如密码

cookie大小上限为4kb

一个服务器最多在客户端上保存20个cookie,一个浏览器 最多保存300个cookie,cookie不安全不建议存敏感信息是明文存储的,是一个k/v格式的键值对

django的代码中,我们可以使用一些提供 Response响应的类,如: HttpResponseredirect等实例的内置 set_cookie函数来进行 django项目中的 Cookie设置

设置cookie

class CookieOper(View):
定义方法设置、获取cookie 删除cookie
def get(self,request):
创建响应对象
resp = HttpResponse()
设置cookie
resp.set_cookie(“name”,”hahahaha”)
resp.set_cookie(“pwd”,”123456″)
获取一下name的值
print(request.COOKIES.get(“name”))
删除cookie
resp.delete_cookie(“name”)
获取一下name
print(request.COOKIES.get(“name”))
返回响应对象
return resp

cookie:存在浏览器中明文,不适合存储敏感信息

虽然说有了 Cookie之后,我们把一些信息保存在客户端浏览器中,可以保持用户在访问站点时的状态,但是也存在一定的安全隐患, Cookie值被曝露, Cookie值被他人篡改,等等。我们将换一种更健全的方式,也就是接下来要说的 Session

Session在网络中,又称会话控制,简称会话。用以存储用户访问站点时所需的信息及配置属性。当用户在我们的 Web服务中跳转时,存储在 Session中的数据不会丢失,可以一直在整个会话过程中存活

之后的一些客户端数据获取,都是通过获取客户端向服务端发起的 HttpRequest请求中里 Cookie中的 sessionid之后,再用该 sessionid从服务端的 Session数据中调取该客户端存储的 Session数据

注意:补充说明,默认存储在数据库的 Session数据,是通过 base64编码的,我们可以通过 Pythonbase64模块下的 b64decode()解码得到原始数据

整个过程结束之后:客户端浏览器存储的其实也只是一个 识别会话的随机字符串 (xxx)

而服务器中是通过这个随机的字符串 (xxx:value)进行真正的存储

Session的使用必须在 Settings配置下

settings.pySessionMiddleware激活后在视图函数的参数 request接收到的客户端发来的 HttpResquest请求对象中都会含有一个 session属性

这个属性和之前所讨论的 Cookie类似,是一个类字典对象,首先支持如下常用字典内置属性

设置session

class SessionOper(View):
def get(self,request):
设置session
request.session[“name”] = “hahahahaha”
获取session
print(request.session.get(“name”))
清空session
request.session.clear()
request.session.flush() # sessionid会被删掉
删除 再次打印会返回None
del request.session[“name”]
print(request.session.get(“name”))
return HttpResponse()

Original: https://www.cnblogs.com/016681gzz/p/16414346.html
Author: 清~欢
Title: cookie和session

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/642793/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • AJAX学习(1)

    基础确认:HTML、CSS、JavaScript AJAX可以: Ajax 的核心是 XMLHttpRequest 对象,用于和服务器交换数据。 xmlhttp.open(&quo…

    技术杂谈 2023年6月21日
    086
  • 被迫开始学习Typescript —— class

    TS 的 class 看起来和 ES6 的 Class 有点像,基本上差别不大,除了 可以继承(实现)接口、私有成员、只读等之外。 参考:https://typescript.bo…

    技术杂谈 2023年5月31日
    084
  • 如何使能uboot的debug开关?

    答: 直接在 Original: https://www.cnblogs.com/dakewei/p/14010217.htmlAuthor: JelloTitle: 如何使能ub…

    技术杂谈 2023年5月31日
    0129
  • C7N 操作当前 table cell

    场景: 在 C7N table 组件中,实现 cell 中的内容,双击展开或收起 思路: 通过 onCell 方法实现 方案: Original: https://www.cnbl…

    技术杂谈 2023年5月30日
    0101
  • 56.谁不是

    dsfdsf posted @2022-09-28 08:32 随遇而安== 阅读(4 ) 评论() 编辑 Original: https://www.cnblogs.com/55…

    技术杂谈 2023年6月21日
    096
  • YARP简介 —— IHttpForwarder

    在YARP框架中,核心处理类是IHttpForwarder接口,它实现了基础的转发流程:从 HttpContext 创建 Http 查询信息、发送到目标地址,并将响应结果写会Htt…

    技术杂谈 2023年5月31日
    084
  • vue总是报错:Trailing spaces not allowed

    翻译: Trailing spaces not allowed:不允许尾随空格 1-报错: 2-解决: 你的某些行的空格多了,删掉就行了 以我的截图为例 代码12行出错 选中12行…

    技术杂谈 2023年6月1日
    097
  • 初级图论

    2021.12.5:修改例题代码与部分表述,增加基础定义。 2022.4.22:重构文章。 2022.5.21:进行一些增补,添加 Floyd 算法和 SCC 缩点。 2022.5…

    技术杂谈 2023年6月21日
    094
  • Mac系统下Datagrip打不开、点击没反应?

    有没有可能是因为你从网上下载了一些破解软件导致的? Mac系统下JB公司家的IDEA、 Datagrip、PyCharm 或 Goland 打不开点击没反应…&#823…

    技术杂谈 2023年7月24日
    080
  • 什么是root帐户?

    root帐户就像一个系统管理员帐户,允许你完全控制系统。你可以在此处创建和维护用户帐户,为每个帐户分配不同的权限。每次安装Linux时都是默认帐户。 Java Program! O…

    技术杂谈 2023年5月31日
    082
  • jetbrain idea误删文件的两种恢复的方法

    idea误删文件的两种恢复的方法。第一种,ctrl+z这一种没必要多说什么,主要在书写代码的时候常用,它的即时性比较高。如果是过了很长时间或者软件关了在打开,那么它就没什么用处了。…

    技术杂谈 2023年5月31日
    083
  • 2022.23 架构整洁之道

    这周读了《架构整洁之道》,有不少收获和启发,是本不错的架构方面的书籍,可以开阔视野巩固知识,值得技术人阅读。 Bob大叔围绕”架构整洁”这一重要导向,系统地…

    技术杂谈 2023年5月30日
    0132
  • Windows 10 MBR转GPT分区

    注意:分区有风险,操作需谨慎,提前备份好数据。 说明: 1、有”系统保留”的分区,可以直接删除,用来做GPT分区的UEFI启动分区。 2、没有”…

    技术杂谈 2023年5月31日
    075
  • 切片的容量是怎样增长的

    一般都是在向 slice 追加了元素之后,才会引起扩容。追加元素调用的是 append 函数。 先来看看 append 函数的原型: func append(slice []Typ…

    技术杂谈 2023年5月31日
    086
  • 【LEETCODE】72、分割回文串 III 第1278题

    package y2019.Algorithm.dynamicprogramming.hard; /** * @Auther: xiaof * @Date: 2019/12/11 …

    技术杂谈 2023年7月24日
    077
  • 知识点复习(持续更新版)

    高等数学 线性代数 如何判断向量组的线性相关性? 由线性相关定义去判断 令向量组的线性组合为零,研究系数的取值情况,线性组合为零当且仅当系数皆为零,则该向量组线性无关;若存在不全为…

    技术杂谈 2023年7月23日
    091
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球