【Flask】Flask Cookie操作
### 什么是cookie:
在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。
cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,
当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。
cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。
1. cookie有有效期:服务器可以设置cookie的有效期,以后浏览器会自动的清除过期的cookie。
2. cookie有域名的概念:只有访问同一个域名,才会把之前相同域名返回的cookie携带给服务器。也就是说,访问谷歌的时候,不会把百度的cookie发送给谷歌。
### flask操作cookie:
1. 设置cookie:设置cookie是应该在Response的对象上设置。`flask.Response`对象有一个`set_cookie`方法,可以通过这个方法来设置`cookie`信息。
在Chrome浏览器中查看cookie的方式:
* 右键->检查->Network->重新加载页面->找到请求,然后查看Response Headers中的cookie
* 点击url输入框左边的信息icon,然后找到相应的域名,再展开查看cookie。
* 在Chrome的设置界面->高级设置->内容设置->所有cookie->找到当前域名下的cookie。
2. 删除cookie:通过`Response.delete_cookie`,指定cookie的key,就可以删除cookie了。
###Flask 设置/删除 cookie
from flask import Flask, request, Response
app = Flask(__name__)
@app.route('/')
def hello_world():
resp = Response("saber's home")
resp.set_cookie('username', 'saber')
return resp
@app.route('/del/')
def delete_cookie():
resp = Response("Saber's home 2")
resp.delete_cookie('username')
return resp
if __name__ == '__main__':
app.run(debug=True)
######. 设置cookie的有效期:
* max_age:以秒为单位,距离现在多少秒后cookie会过期。
* expires:为datetime类型。这个时间需要设置为格林尼治时间,也就是要距离北京少8个小时的时间。
* 如果max_age和expires都设置了,那么这时候以max_age为标准。
* max_age在IE8以下的浏览器是不支持的。expires虽然在新版的HTTP协议中是被废弃了,但是到目前为止,所有的浏览器都还是能够支持,所以如果想要兼容IE8以下的浏览器,那么应该使用expires,否则可以使用max_age。
* 默认的过期时间:如果没有显示的指定过期时间,那么这个cookie将会在浏览器关闭后过期。
from flask import Flask, request, Response
from datetime import datetime, timedelta app = Flask(__name__) @app.route('/')
def hello_world():
resp = Response("saber's home")
# resp.set_cookie('username', 'saber', max_age=60)
# resp.set_cookie('username', 'saber', expires=datetime(2018, 4, 19, 14, 0, 0))
expires = datetime.now() + timedelta(days=30, hours=16)
resp.set_cookie('username', 'saber', expires=expires)
return resp if __name__ == '__main__':
app.run(debug=True)
#### 设置cookie有效域名
cookie默认是只能在主域名下使用。如果想要在子域名下使用,那么应该给`set_cookie`传递一个`domain='.hy.com'`,这样其他子域名才能访问到这个cookie信息。
from flask import Flask, request, Response
from datetime import datetime, timedelta
from cmsviews import bp app = Flask(__name__)
app.register_blueprint(bp)
app.config['SERVER_NAME'] = 'hy.com:5000' @app.route('/')
def hello_world():
resp = Response("saber's home")
# resp.set_cookie('username', 'saber', max_age=60)
# resp.set_cookie('username', 'saber', expires=datetime(2018, 4, 19, 14, 0, 0))
resp.set_cookie('username', 'saber', domain='.hy.com')
return resp if __name__ == '__main__':
app.run(debug=True)
【Flask】Flask Cookie操作的更多相关文章
- flask中cookie和session介绍
flask中cookie和session介绍 一.cookie: 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.co ...
- flask中cookie和session设置
flask中cookie和session介绍 一.cookie: 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户. ...
- flask的orm操作
django是有orm操作的 可想而知 那么flask也是有orm操作的,其实flask的orm操作的使用和djnago的是差不多的 django的orm操作进行条件筛选的时候后面跟着的是objec ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- day92:flask:flask简介&基本运行&路由&HTTP请求和响应
目录 1.Flask简介 2.关于使用flask之前的准备 3.flask的基本运行 4.flask加载配置 5.传递路由参数(没有限定类型) 6.传递路由参数(通过路由转换器限定路由参数的类型) 7 ...
- Inside Flask - flask.__init__.py 和核心组件
Inside Flask - flask.__init__.py 和核心组件 简单的示例 首先看看一个简单的示例.使用 Flask ,通常是从 flask 模块导入 Flask . request 等 ...
- [python][flask] Flask 图片上传与下载例子(支持漂亮的拖拽上传)
目录 1.效果预览 2.新增逻辑概览 3.tuchuang.py 逻辑介绍 3.1 图片上传 3.2 图片合法检查 3.3 图片下载 4.__init__.py 逻辑介绍 5.upload.html ...
- Inside Flask - flask 扩展加载过程
Inside Flask - flask 扩展加载过程 flask 扩展(插件)通常是以 flask_<扩展名字> 为扩展的 python 包名,而使用时,可用 import flask. ...
- Inside Flask - Flask 简介
Inside Flask - Flask 简介 前言 Flask 的设计目标是实现一个 wsgi 的微框架,其核心代码保持简单和可扩展性,很容易学习.对于有一定经验初学者而言,跟着例子和一些书的代码来 ...
- Python脚本控制的WebDriver 常用操作 <二十八> 超时设置和cookie操作
超时设置 测试用例场景 webdriver中可以设置很多的超时时间 implicit_wait.识别对象时的超时时间.过了这个时间如果对象还没找到的话就会抛出异常 Python脚本 ff = webd ...
随机推荐
- 天地币:所用到的 Android Socket 通讯编程技术试验
1.为了开发"天地币"这个Android手机项目,须要用到Socket编程. 2.天地币是一种类似于比特币的虚拟货币. 3.为了赚取CSDN的C币,须要写篇博客. 4.干脆将调试S ...
- 简单理解Javascript中的call 和 apply
javascript中面向对像的能力是后来加进来的, 为了兼容性, 所以整出了很多奇特的东西, function Animal(){ this.name = "Animal"; t ...
- python解释器的分类及特点
CPython 当从Python官方网站下载并安装好Python2.7后,就直接获得了一个官方版本的解释器:Cpython,这个解释器是用C语言开发的,所以叫CPython,在命名行下运行python ...
- js高级面试题
<script> //1. var foo = { bar: function () { return this.baz; }, baz: 1 }; (function () { retu ...
- iOS开发之--storyboary下,为btn/lab/view等添加裁剪和阴影的方法
在开发过程中,很多时候我们都需要定制一个控件的属性,比如边框.阴影.圆角裁剪等,使用代码创建控件的时候,我们都知道,直接对layer图层进行各种属性的操作, self.button.layer.cor ...
- 阿里面试经历JAVA总结
为记录阿里的电面经历,特与大家分享,岗位是JAVA研发工程师. 一面主要问题如下: 1)首先自我介绍 2)数据结构算法的基本问题,如排序算法,二叉树遍历,后序遍历非递归,图的最短路径问题 3)对一个数 ...
- 滚动监听: bootstrap 的scrollspy
滚动监听 bootstrap 的scrollspy,需要借助.nav样式,活动的部分是加 .active类.本身导航没有position:fixed,需要自己加入 滚动监听.只有滚动和监听,只有默认锚 ...
- finereport Web工具栏
1.获取报表工具栏按钮 在报表页面中,偶尔会有需要获取工具栏按钮的需求,之前只能通过contentPane.toolbar.options.items[index]来获取,比较不方便,现在我们提供了两 ...
- Java栈(Stack)和堆(Heap)
In the following code public void Method1() { int i = 4; int y = 2; class1 cls1 = new class1(); } He ...
- pycharm-->github / github-->pycharm
一.pycharm -->发布到--> github:1.github 账号密码 https://github.com/2.git 下载安装 https://git-scm.com/3.配 ...