【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

 1 from flask import Flask, request, Response
 2
 3 app = Flask(__name__)
 4
 5
 6 @app.route(‘/‘)
 7 def hello_world():
 8     resp = Response("saber‘s home")
 9     resp.set_cookie(‘username‘, ‘saber‘)
10     return resp
11
12
13 @app.route(‘/del/‘)
14 def delete_cookie():
15     resp = Response("Saber‘s home 2")
16     resp.delete_cookie(‘username‘)
17     return resp
18
19 if __name__ == ‘__main__‘:
20     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将会在浏览器关闭后过期。

 1 from flask import Flask, request, Response
 2 from datetime import datetime, timedelta
 3
 4 app = Flask(__name__)
 5
 6
 7 @app.route(‘/‘)
 8 def hello_world():
 9     resp = Response("saber‘s home")
10     # resp.set_cookie(‘username‘, ‘saber‘, max_age=60)
11     # resp.set_cookie(‘username‘, ‘saber‘, expires=datetime(2018, 4, 19, 14, 0, 0))
12     expires = datetime.now() + timedelta(days=30, hours=16)
13     resp.set_cookie(‘username‘, ‘saber‘, expires=expires)
14     return resp
15
16 if __name__ == ‘__main__‘:
17     app.run(debug=True)

#### 设置cookie有效域名

cookie默认是只能在主域名下使用。如果想要在子域名下使用,那么应该给`set_cookie`传递一个`domain=‘.hy.com‘`,这样其他子域名才能访问到这个cookie信息。

 1 from flask import Flask, request, Response
 2 from datetime import datetime, timedelta
 3 from cmsviews import bp
 4
 5 app = Flask(__name__)
 6 app.register_blueprint(bp)
 7 app.config[‘SERVER_NAME‘] = ‘hy.com:5000‘
 8
 9
10 @app.route(‘/‘)
11 def hello_world():
12     resp = Response("saber‘s home")
13     # resp.set_cookie(‘username‘, ‘saber‘, max_age=60)
14     # resp.set_cookie(‘username‘, ‘saber‘, expires=datetime(2018, 4, 19, 14, 0, 0))
15     resp.set_cookie(‘username‘, ‘saber‘, domain=‘.hy.com‘)
16     return resp
17
18 if __name__ == ‘__main__‘:
19     app.run(debug=True)

原文地址:https://www.cnblogs.com/chen0427/p/8886571.html

时间: 2024-10-12 10:04:18

【Flask】Flask Cookie操作的相关文章

解决Flask中文件操作出现UnicodeDecodeError UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in positio

写一个Flask应用的功能时需要读文件,文件内容含指定字符串的话(即有个if key in filecontent的比较)就把文件内容输出到页面,,结果报错UnicodeDecodeError,查阅Flask的文档却似乎讲Flask默认哪里都是utf8编码,可现在却出了个由于字符是utf8而不是ascii报的错 最后解决了 我灵机一点把filecontent解码一下,写成filecontent.decode('utf8'),就顺利的运行了 版权声明:本文为博主原创文章,未经博主允许不得转载. 解

js 判断js函数、变量是否存在 JS保存和删除cookie操作,判断cookie是否存在的方法

//是否存在指定函数 function isExitsFunction(funcName) {    try {        if (typeof(eval(funcName)) == "function") {            return true;        }    } catch(e) {}    return false;}//是否存在指定变量 function isExitsVariable(variableName) {    try {        if

JS封装cookie操作函数实例(设置、读取、删除)

本文实例讲述了JS封装cookie操作函数.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 /*设置cookie*/ function setCookie(name, value, iDay) {   var oDate=new Date();   oDate.setDate(oDate.getDate()+iDay);   document.cook

C# 自定义cookie封装类,简化Cookie操作

封装了常用的cookie操作,包括读取cookie.写入cookie.设置cookie过期时间等等. using System; using System.Web; namespace DotNet.Utilities { public class CookieHelper { /// <summary> /// 清除指定Cookie /// </summary> /// <param name="cookiename">cookiename<

深入了解Cookie(1)------selenium2进行Cookie操作的前奏

世界上最宽阔的是海洋,比海洋还宽阔的是天空,比天空还宽阔的是人的心量.做人的心量有多大,人生的成就就有多大.不为一己之利去争.去斗.去夺,扫除报复之心和嫉妒之念,自然"心底无私天地宽". Cookie是当前识别用户,实现持久会话的最好方式.Cookie最初是由网景公司开发,但是现在所有的主要浏览器都支持它. Cookie的类型:会话Cookie和持久Cookie 会话Cookie是一种临时Cookie,它记录了用户访问站点时的设置和偏好.用户退出浏览器时,会话Cookie就被删除了.

JavaScript之DOM-10 cookie (cookie概述、cookie操作)

一.Cookie 概述 Cookie 简介 - Cookie 是由服务器生成并存存储在客户端文件系统(.txt格式)中的key/value对,当浏览器再次请求该站点上的页面时,就会自动把保存的Cookie发回服务器 - Cookie 使得浏览器可以在访问同一站点的不同请求间传递数据,让服务器程序识别不同的客户端 - 典型应用: 保存用户登录状态.跟踪用户行为.页面定制.保存购物车等需要保存全局变量的场合 Cookie 的存放 - Cookie 保存在客户端某个特定的目录下的一个.txt文本文件中

jquery实现的cookie操作插件

jquery实现的cookie操作插件: cookie虽说具有一定的确定,但是在某些问题的处理上还是非常好用的,这里就不列举了,这里提供一个jquery实现的操作cookie的插件,功能比较全面,希望给大家带来一定的帮助,代码如下: jQuery.cookie=function(name, value, options){ if(typeof value != 'undefined'){ options=options||{}; if(value === null){ value=''; opt

selenium——cookie操作

a.获得cookie信息:driver.get_cookies() 1 #coding=utf-8 2 from selenium import webdriver 3 import time 4 5 driver=webdriver.Ie() 6 driver.get("http://www.youdao.com") 7 8 cookie=driver.get_cookies() #获取当前页的cookie 9 print cookie 10 driver.quit() b.对coo

【.NET】Cookie操作类

using System; using System.Web; using System.Data; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Text; namespace Tool { /// <summary> /// Cookie操作类 /// </summary> public static c

Yii cookie操作

设置cookie: $cookie = new CHttpCookie('mycookie','this is my cookie'); $cookie->expire = time()+60*60*24*30;  //有限期30天 Yii::app()->request->cookies['mycookie']=$cookie; 读取cookie: $cookie = Yii::app()->request->getCookies(); echo $cookie['myco