📜  cookie 与会话 (1)

📅  最后修改于: 2023-12-03 14:40:12.924000             🧑  作者: Mango

Cookie 与会话

CookieSession 是网站开发中常用的概念。这两个概念都是用来保存用户状态的,但它们实现的方式略有不同。

Cookie

Cookie 可以在客户端保存用户的状态信息。当用户访问网站时,服务器可以发送一个 Cookie 到用户的浏览器,浏览器会保存这个 Cookie。当用户再次访问网站时,浏览器会检查本地是否保存有网站的 Cookie,如果有,就会发送给服务器,相当于告诉服务器,我是这个用户。服务器根据这个 Cookie 来识别用户,包括用户的身份、偏好等信息。

Cookie 通常用于保存用户登录信息,这样用户在登录之后,就可以在一段时间内免登录,提高用户的使用体验。

在浏览器中查看 Cookie 可以通过开发者工具->Application->Cookies 面板查看。

Session

Session 也可以保存用户的状态信息,但与 Cookie 不同的是,Session 是将用户的状态信息存储在服务器上。当用户访问网站时,服务器会给这个用户创建一个 Session,并将 Session 的 ID 发送给浏览器,浏览器通过 Cookie 把这个 ID 保存在本地。当用户再次访问网站时,浏览器会将这个 Session 的 ID 发送给服务器,服务器根据这个 ID 来识别用户。

Session 通常用于保存用户的临时状态信息,比如用户选择的商品、浏览记录等。和 Cookie 不同的是,Session 在用户关闭浏览器后会自动超时,这意味着 Session 中保存的状态信息会被清除,用户下次访问网站时,会重新获取状态信息。

在服务器端设置 Session 中的信息可以通过各种编程语言和框架来实现。

示例

设置 Cookie

from flask import Flask, make_response

app = Flask(__name__)

@app.route('/')
def index():
    resp = make_response('Hello, World!')
    resp.set_cookie('username', 'flask')
    return resp

获取 Cookie

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def index():
    username = request.cookies.get('username')
    return 'Hello, {}!'.format(username)

设置 Session

from flask import Flask, session

app = Flask(__name__)
app.secret_key = 'your secret key'  # 设置 Secret Key

@app.route('/')
def index():
    session['username'] = 'flask'
    return 'Hello, World!'

获取 Session

from flask import Flask, session

app = Flask(__name__)
app.secret_key = 'your secret key'  # 设置 Secret Key

@app.route('/')
def index():
    username = session.get('username')
    return 'Hello, {}!'.format(username)