Cookie
Cookie:指某些网站为了辨别用户身份、进行会话跟踪而储存在用户本地的数据(通常经过加密)。
复数形式Cookies。
Cookie最早是网景公司的前雇员Lou Montulli在1993年3月的发明。
Cookie是由服务器端生成,发送给客户端浏览器,浏览器会将Cookie的key/value保存,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。
Cookie的key/value可以由服务器端自己定义。
应用:
最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookie的功用。
网站的广告推送,经常遇到访问某个网站时,会弹出小窗口,展示我们曾经在购物网站上看过的商品信息。
购物车,用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookie,以便在最后付款时提取信息。
提示:
Cookie是存储在浏览器中的一段纯文本信息,建议不要存储敏感信息如密码,因为电脑上的浏览器可能被其它人使用
Cookie基于域名安全,不同域名的Cookie是不能互相访问的
如访问itcast.cn时向浏览器中写了Cookie信息,使用同一浏览器访问baidu.com时,无法访问到itcast.cn写的Cookie信息
浏览器的同源策略
当浏览器请求某网站时,会将本网站下所有Cookie信息提交给服务器,所以在request中可以读取Cookie信息
Session
session:请求上下文对象,用于处理http请求中的一些数据内容
对于敏感、重要的信息,建议要存储在服务器端,不能存储在浏览器中,如用户名、余额、等级、验证码等信息
在服务器端进行状态保持的方案就是Session
Session依赖于Cookie
上面简单了解了cookie和session的简单定义与作用,我们来用现实来举个例子。大家都在用淘宝吧!购物车大家都用过吧,我们购物车里有我们想要买的东西 我们下次登陆的时候购物车里的数据还在购物车里,这是不是说明了我们之前在购物车里的数据被存储到了一个地方,而我们想要看到这些数据必须登陆所对应的淘宝账户,购物车就是一个简单的cookie,我们每次关闭浏览器下次打开时需要重新登陆,而我们登陆淘宝账户就是一个简单的session。
cookie对应的是 client(客户端)
session对应的是 server(服务端)
代码:
cookie的存储,调用,删除
# -*- encoding: utf-8 -*- #cookie相关操作,依赖于make_response库,调用cookie依赖于与request模块 from flask import Flask,make_response,request #建立对象 app=Flask(__name__) #从配置文件中加载位置 app.config.from_pyfile('config.ini') @app.route('/') def index(): return '这里是首页'
@app.route('/setcookie') def set_cookie(): resp=make_response('存储cookie') #使用set_cookie方法存储key_value形式的数据 resp.set_cookie('productname','笔记本') return resp
@app.route('/getcookie') def get_cookie(): #通过requests模块的cookies属性的get方法,指定key来调用value resp=request.cookies.get('productname') return resp
@app.route('/delcookie') def del_cookie(): #通过make_response对象内置的delete_cookie方法来指定key来删除value resp=make_response('删除cookie') resp.delete_cookie('productname') return resp
# -*- encoding: utf-8 -*- #session是依赖于flask的session模块 #如果想要使用session模块,在配置里必须定义sessionkey from flask import Flask,session #建立对象 app=Flask(__name__) #从配置文件里加载配置 app.config.from_pyfile('config.ini') @app.route('/') def inndex(): return "我是session的首页"
@app.route('/set_session') def set_session(): #通过直接使用session对内容赋值 session['username']='你好' return '存储session成功'
@app.route('/get_session') def get_session(): #通过session直接对内容进行调用 se=session['username'] return se
@app.route('/del_session') def del_session(): #通过session的pop方法来指定key来删除value session.pop('username') return '删除成功'