flask 中 session和cookie的使用(一)

1.什么是cookie:

      在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。

      cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。

      cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。

2. cookie的有效期:

       服务器可以设置cookie的有效期,以后浏览器会自动的清除过期的cookie。

3. cookie有域名的概念:

       只有访问同一个域名,才会把之前相同域名返回的cookie携带给服务器。也就是说,访问百度的时候,不会把新浪网站的cookie发送给百度。

4.画个图演示Cookie的工作过程

 

1. 设置cookie:

设置cookie是在Response的对象上设置。

`flask.Response`对象有一个`set_cookie`方法,可以通过这个方法来设置`cookie`信息。

key,value形式设置信息

2.查看cookie信息

在Chrome浏览器中查看cookie的方式:

    * 方式1.借助于 开发调式工具进行查看

    * 方式2.在Chrome的设置界面->高级设置->内容设置->所有cookie->找到当前域名下的cookie。

3. 删除cookie:

    方式1:通过`Response对象.delete_cookie`,指定cookie的key,就可以删除cookie了。

    方式2:在客户端浏览器  人为的删除(清除浏览器浏览历史记录后,很多网站之前免密登录的都不好使了)

4. 设置cookie的有效期:

    注意!!!!!!!! 如果 max_age 和expire 都设置了  已max_age为准
    """
    resp.set_cookie('name','wy',max_age=60)   # max_age = 60 指的是60s后过期
    e = datetime.now()+ timedelta(days=1,hours=8)
    resp.set_cookie('pwd','123',expires=e) # expires 指 指定到期的时间  

 代码如下

"""  
session 和cookie 是为了处理http 中无状态
"""

"""  
flask 设置cookie 和删除cookie
"""

from flask import Flask,Response
from datetime import datetime,timedelta
app = Flask(__name__)

@app.route('/')
def index():
    return 'hello'


@app.route('/cookie')
def createcookie():
    # 设置cookie  
    resp = Response('有服务端创建cookie 信息')
    """  
    注意!!!!!!!! 如果 max_age 和expire 都设置了  已max_age为准
    """
    resp.set_cookie('name','wy',max_age=60)   # max_age = 60 指的是60s后过期
    e = datetime.now()+ timedelta(days=1,hours=8)
    resp.set_cookie('pwd','123',expires=e) # expires 指 指定到期的时间    
    # 在服务端删除指定的 cookie信息   
    resp.delete_cookie('pwd')     # 例如删除 pwd cookie信息  ,那第一次访问浏览器客户端响应收到的就一个name的cookie信息,之后在请求头中收到一个name的cookie信息
    # 如何设置cookie信息的有效期
    
    
    return resp


if __name__=='__main__':
    app.run()

5. 设置cookie的有效域名:

cookie默认是只能在主域名下使用。

如果想要在子域名下使用,那么应该给`set_cookie`传递一个参数`domain='.momo.com'`,这样其他子域名才能访问到这个cookie信息。

代码如下

蓝图.py

from flask import Blueprint,request

bp = Blueprint('cms',__name__,subdomain='cms')

@bp.route('/')
def index():
    # request.args
    # request.form
    # request.files
    uname = request.cookies.get('uname')
    return uname or "没有获取到cookie"

windows上的hosts文件如下:

 

from flask import Flask,Response,request
from datetime import datetime,timedelta
from cmsblueprint  import bp
app = Flask(__name__)

app.register_blueprint(bp)
app.config['SERVER_NAME'] = 'momo.com:5000'

@app.route('/createCookie/')
def createCookie():
    resp = Response("服务器端通过Response对象创建Cookie信息  并返回给客户端  并保存在客户端")
    ex = datetime(year=2019, month=2, day=27, hour=16, minute=0, second=0)
    ex2 =datetime.now() + timedelta(days=30,hours=16)
    resp.set_cookie('pwd',"123456",expires=ex2)

    #给Cookie信息设置 存活时间  【有效域名---》子域名】
    resp.set_cookie('uname', "momo", expires=ex,domain=".momo.com")

    return resp


if __name__ == '__main__':
    app.run(debug=True)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

allen wy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值