来一块Cookie
HTTP是无状态(stateless)协议。也就是说,在一次请求响应结束后,服务器不会留下任何关于对方状态的信息。但是对于某些Web程序来说,客户端的某些信
息又必须被记住,比如用户的登录状态,这样才可以根据用户的状态来返回不同的响应。为了解决这类问题,就有了Cookie技术。Cookie技术通过在请求和响应报文
中添加Cookie数据来保存客户端的状态信息.
Cookie指Web服务器为了存储某些数据(比如用户信息)而保存在浏览器上的小型文本数据。浏览器会在一定时间内保存它,并在下一次向同一个服务器发送请
求时附带这些数据。Cookie通常被用来进行用户会话管理(比如登录状态),保存
用户的个性化信息(比如语言偏好,视频上次播放的位置,网站主题选项等)以及
记录和收集用户浏览数据以用来分析用户行为等。
设置cookie
from flask import Flask, make_response
...
@app.route('/set/<name>')
def set_cookie(name):
response = make_response(redirect(url_for('hello')))
response.set_cookie('name', name)
return response
在Flask中,Cookie可以通过请求对象的cookies属性读取。在修改后的hello视图中,如果没有从查询参数中获取到name的值,就从Cookie中寻找:
from flask import Flask, request
@app.route('/')
@app.route('/hello')
def hello():
name = request.args.get('name')
if name is None:
name = request.cookies.get('name', 'Human') # 从Cookie中获取name值
return '<h1>Hello, %s</h1>' % name
session
在浏览器中手动添加和修改Cookie是很容易的事,仅仅通过浏览器插件就可以实现。所以,如果直接把认证信息以明文的方式存储在
Cookie里,那么恶意用户就可以通过伪造cookie的内容来获得对网站的权限,冒用
别人的账户。为了避免这个问题,我们需要对敏感的Cookie内容进行加密。方便的
是,Flask提供了session对象用来将Cookie数据加密储存。
在编程中,session指用户会话(user session),又称为对话(dialogue),即服务器和客户端/浏览器之间或桌面程序和用户之间建立的交互
活动。在Flask中,session对象用来加密Cookie。默认情况下,它会把数据存储