Flask中Cookie和Session理解与作用介绍
作者:Ywx_csdn 发布时间:2022-05-03 21:50:35
前序
1、cookie介绍
Cookie是一段不超过4KB的小型文本数据,保存在客户端浏览器中,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。其中 :
(1) Name/Value:设置Cookie的名称及相对应的值,对于认证Cookie,Value值包括Web服务器所提供的访问令牌。
(2) Expires属性:设置Cookie的生存期。有两种存储类型的Cookie:会话性与持久性。Expires属性缺省时,为会话性Cookie,仅保存在客户端内存中,并在用户关闭浏览器时失效;持久性Cookie会保存在用户的硬盘中,直至生存期到或用户直接在网页中单击“注销”等按钮结束会话时才会失效 。
(3) Path属性:定义了Web站点上可以访问该Cookie的目录 。
(4) Domain属性:指定了可以访问该 Cookie 的 Web 站点或域。
2、session介绍
Session:与cookie功能效果相同。Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的。
当访问服务器否个网页的时候,会在服务器端的内存里开辟一块内存,这块内存就叫做session,而这个内存是跟浏览器关联在一起的。这个浏览器指的是浏览器窗口,或者是浏览器的子窗口,意思就是,只允许当前这个session对应的浏览器访问,就算是在同一个机器上新启的浏览器也是无法访问的。而另外一个浏览器也需要记录session的话,就会再启一个属于自己的session。
一、cookie学习
1、设置cookie
在服务器设置cookie需要导入make_response包
response=make_response(‘hello world’) 括号这里传入的值是在客户端响应的内容
response.set_cookie(‘username’,‘mashibing’,max_age=3600) 第一个值是cookie名称,第二个值cookie内容,第三个值设置cookie的有效时间
这个有效时间在服务器没有关闭的状态下,有效时间内,即使你关闭了客户端(浏览器),再次打开客户端(浏览器)仍能访问到。
from flask import *
app=Flask(__name__)
#设置cookie以及有效性期
@app.route('/cookie')
def set_cookiei():
response=make_response('hello world')
response.set_cookie('username','mashibing',max_age=3600)
return response
#读取
@app.route('/get_cookie')
def get_cookie():
resp=request.cookies.get('username')
return resp
if __name__ == '__main__':
app.run()
2、客户端(浏览器)
二、session学习
1、设置SECRET_KEY
这里SECRET_KEY的值是可以随机设置,可以使用os.urandom(24) 随机生成24位字符
此值 [ SECRET_KEY 设置]是保护签名数据的关键 - 保持此安全至关重要,否则攻击者可以使用它来生成自己的签名值。
设置SECRET_KEY 配合加密算法生成sessionID
PERMANENT_SESSION_LIFETIME=timedelta(minutes=30) 设置该sessionID在服务器存储的时间,在有效时间内客户端(浏览器)关掉后再次重新访问时,会对其session ID进行校验,若是之前保存在服务器的session ID对应,则可以拿到之前session值。
class Df(object):
SECRET_KEY=os.urandom(24)
PERMANENT_SESSION_LIFETIME=timedelta(minutes=30)
2、设置session
这里设置session值在客户端是看不到的,相对安全,除非服务器崩了。
设置的session会保存在服务器。
session.permanent=True #这行代码也要写不然前面定义的时间失效。
设置session是以键值对的形式。
@app.route('/test1')
def test1():
session.permanent=True #这行代码也要写不然前面定义的时间失效
#设置session
session['un']='ywx'
session['pwd']='123456'
return 'hello ywx'
3、获取session值
通过session.get() 获取定义的值
#读取session
@app.route('/test2')
def test2():
un=session.get('un')
pwd=session.get('pwd')
print(un,pwd)
return '获取session的值'
4、整体代码展示
from flask import *
import os
from datetime import timedelta
app=Flask(__name__)
#设置SECRET_KEY
class Df(object):
SECRET_KEY=os.urandom(24)
PERMANENT_SESSION_LIFETIME=timedelta(minutes=30)
#导进来参数
app.config.from_object(Df)
@app.route('/test1')
def test1():
session.permanent=True #这行代码也要写不然前面定义的时间失效
#设置session
session['un']='ywx'
session['pwd']='123456'
return 'hello ywx'
#读取session
@app.route('/test2')
def test2():
un=session.get('un')
pwd=session.get('pwd')
print(un,pwd)
return '获取session的值'
if __name__ == '__main__':
app.run()
5、客户端(浏览器)展示
来源:https://blog.csdn.net/Ywx_csdn/article/details/127195470
猜你喜欢
- 析构函数:当某个对象成为垃圾或者当对象被显式销毁时执行。GC(Garbage Collector) 在PHP中,没有任何变量指向这个对象时,
- Image模块Image模块是在Python PIL图像处理中常见的模块,对图像进行基础操作的功能基本都包含于此模块内。如ope
- 1.安装模块Python 要使用 redis,需要先安装 redis 模块:pip install redis测试安装:redis 取出的结
- 使用指令:pyinstaller -F -w main.py生成的.exe文件执行报错看报错信息,初步怀疑是生成的.exe不能执行.ini配
- 手动安装Anaconda环境变量安装 Anaconda后,在命令行执行python命令或conda命令会报错无法找到此时就需要我们手动添加环
- Profile 和 cProfile在 Python 标准库里面有两个模块可以用来做性能测试。1. 一个是 Profile,它是一个纯 Py
- django是 * 页,一般来说需要实时的生成访问的页面,展示给访问者,这样,内容可以随时变化,也就说请求到达视图函数之后,然后进行模板渲染
- 前言:Unittest又名单元测试,主要用于测试自己写的代码的正确性和完备性,也方便自己和他人对代码的维护。在软件开发过程中,测试驱动开发的
- 使用命令:os.system('python file_name.py')解释:os.system是执行当前的系统命令1、拿
- 本文实例为大家分享了用matplotlib中scatter方法画散点图的具体代码,供大家参考,具体内容如下1、最简单的绘制方式绘制散点图是数
- 一、文章概述本文将要讲述的是Python环境下如何用OpenCV检测人脸,本文的主要内容分为:1、检测图片中的人脸2、实时检测视频中出现的人
- 一、图像二值化1.效果2.源码import cv2import numpy as npimport matplotlib.pyplot as
- 正则表达式的使用想要学习 Python 爬虫 , 首先需要了解一下正则表达式的使用,下面我们就来看看如何使用。. 的使用这个时候的点就相当于
- 如下所示:import cv2fps = 16 size = (width,height) videowriter = cv2.VideoW
- 根据GB11643-1999公民身份证号码是特征组合码,由十七位数字本体码和一位数字校验码组成,排列顺序从左至右依次为:六位数字地址码八位数
- py文件为utf-8格式#!/usr/bin/env python# -*- coding:utf-8 -*-a = "syste
- hasattr()函数hasattr()函数用于判断是否包含对应的属性语法:hasattr(object,name)参数:object--对
- 什么是Firebug从事了数年的Web开发工作,越来越觉得现在对WEB开发有了更高的要求。要写出漂亮的HTML代码;要编写精致的CSS样式表
- 自动发送邮件功能是我们经常要用到的,比如每天定时统计报表信息,然后自动发送给运营人员,协助运营人员进行业务数据分析。本文是用Python写的
- 目录小游戏规则简介实现初始化游戏窗口游戏逻辑实现玩家类实现月饼类交互逻辑总结中秋佳节就快来临,给各位大佬整个兔子吃月饼的小游戏助助兴,废话不