前言:
http本身请求是无状态的。即第一次和服务器连接后并且登录成功后,第二次请求服务器不能知道当前请求是哪个用户。服务端需要记录用户的状态时,就需要用某种机制来识具体的用户. 为了使服务器可以知道请求是谁发出的. 所以cookie和session就出现了
cookie和session
Session: 是在服务端保存的一个数据结构,用来跟踪用户的会话状态,
这个数据可以保存在集群、数据库、文件中;
Cookie: 是客户端保存用户信息的一种机制,用来记录用户的一些信息,
客户端在每次请求的时候会带上他以表明自己的身份.
并不是服务端记住了cookie,而是通过cookie,知道了这个请求是谁发出的,
同时cookie也是实现Session的一种方式。
这二者再不同的web框架中都有不同的实现,
比如flask中的session就是 session的信息经过加密后存放到cookie中, 如下图:
详细看一下flask中的session和cookie的具体函数
cookie
from flask import Flask,Response,request
def handler_cookie():
reps = Response("ok")
reps.set_cookie('username','jg')
reps.delete_cookie("username")
def index():
username = request.cookies.get("username")
return username
session
from flask import Flask,session
import os
from datetime import timedelta
app = Flask(__name__)
app.config['SECRET_KEY'] = "asfd123!@#&(*(*&#@@"
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hours=2)
@app.route('/handler_session/')
def handler_session():
session['username'] = 'jg'
session['user_id'] = '1'
session.permanent = True
username = session.get('username')
user_id = session.get('user_id')
print(user_id)
session.clear()
|