设置cookie
是在Response
的对象上设置。
flask.Response
对象有一个set_cookie
方法,可以通过这个方法来设置cookie
信息。
以key
,value
形式设置信息。
在Chrome
浏览器中查看cookie
的方式:
方式1 借助于 开发调式工具进行查看
方式2 在Chrome
的设置界面->高级设置->内容设置->所有cookie
->找到当前域名下的cookie
。
方式1:
通过Response对象.delete_cookie
,指定cookie的key,就可以删除cookie了。
方式2:
在客户端浏览器人为的删除(清除浏览器浏览历史记录后,很多网站之前免密登录的都不好使了)
max_age
:以秒为单位,距离现在多少秒后cookie
会过期。
expires
:为datetime
类型。这个时间需要设置为格林尼治时间,相对北京时间来说 会自动+8小时
如果max_age
和expires
都设置了,那么这时候以max_age
为标准。
默认的过期时间
:如果没有显示的指定过期时间,那么这个cookie
将会在浏览器关闭后过期。
from flask import Flask,request,Response
from datetime import datetime,timedelta
app = Flask(__name__)
@app.route('/createCookie/')
def createCookie():
resp = Response("服务器端通过Response对象创建Cookie信息 并返回给客户端 并保存在客户端")
#设置Cookie的有效期【存活时间】方式1 :
#max_age=以秒为单位【距离现在多少秒后cookie会过期】
resp.set_cookie('uname',"wukong",max_age=1200)
#设置Cookie的有效期【存活时间】方式2 :
#expires= datetime类型。
#这个时间需要设置为格林尼治时间,相对北京时间来说 会自动+8小时
ex = datetime(year=2019, month=2, day=28, hour=0, minute=0, second=0)
#如果要和北京时间相同,需要减去8个小时
ex = datetime(year=2019, month=2, day=27, hour=16, minute=0, second=0)
resp.set_cookie('uname', "wukong", expires=ex)
#如果max_age和expires都设置了,那么这时候以max_age为标准
ex2 =datetime.now() + timedelta(days=30,hours=16)
resp.set_cookie('pwd',"123456",max_age=300,expires=ex2)
return resp
if __name__ == '__main__':
app.run(debug=True)
cookie默认是只能在主域名下使用。
如果想要在子域名下使用,那么应该给set_cookie
传递一个参数domain='.wukong.com'
,这样其他子域名才能访问到这个cookie
信息。
windows中的host文件设置:
127.0.0.1 wukong
127.0.0.1 wukong.com
127.0.0.1 test01.wukong.com
127.0.0.1 localhost
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'] = 'wukong.com:5000'
@app.route('/createCookie/')
def createCookie():
resp = Response("服务器端通过Response对象创建Cookie信息 并返回给客户端 并保存在客户端")
#设置访问实时时间加上一个月
ex2 =datetime.now() + timedelta(days=30,hours=16)
#给Cookie信息设置 存活时间 【有效域名---》子域名】
resp.set_cookie('uname', "wukong", expires=ex2,domain=".wukong.com")
return resp
if __name__ == '__main__':
app.run(debug=True)