from flask import Flask
app = Flask(__name__)
一.cookie
from flask import Flask, make_response, request
@app.route('/')
def hello():
response = make_response('ok') #先要創建一個response對象
response.set_cookie('key','value') #用set_cookie設置cookies
cookies = request.cookies #獲取所有cookies且以字典的形式的返回
cookies_key = request.cookies['key'] #因為返回是cookies的字典對象所以我們可以用字典取值取出指定的cookie
return response
二.session
用之前必須先設置秘鑰
app.secret_key="asdas" #值隨便
使用
from flask import Flask, make_response, request,session
app.config['SESSION_COOKIE_NAME']="session_key" #這是配置網頁中sessions顯示的key
@app.route('/')
def hello():
session['username'] = 'xxx' #設置
#session本身就是個字典相當於把一個username:xxx鍵值對丟進去,然后Flask會把整個字典結合secret_key進行加密
#1.生成一個隨機的字符串
#2 往數據庫存
#3 寫入cookie返回瀏覽器
sessions = session #獲取所有session
session_username =session['username'] #獲取指定session
session.pop('username') #刪除session原理和字典的刪除方式一樣
return 'ok'
設置cookie的參數
key, 鍵
value='', 值
max_age=None, 超時時間 cookie需要延續的時間(以秒為單位)如果參數是\ None`` ,這個cookie會延續到瀏覽器關閉為止
expires=None, 超時時間(IE requires expires, so set it if hasn't been already.)
path='/', Cookie生效的路徑,/ 表示根路徑,特殊的:根路徑的cookie可以被任何url的頁面訪問,瀏覽器只會把cookie回傳給帶有該路徑的頁面,這樣可以避免將cookie傳給站點中的其他的應用。
domain=None, Cookie生效的域名 你可用這個參數來構造一個跨站cookie。如, domain=".example.com"所構造的cookie對下面這些站點都是可讀的:www.example.com 、 www2.example.com 和an.other.sub.domain.example.com 。如果該參數設置為 None ,cookie只能由設置它的站點讀取
secure=False, 瀏覽器將通過HTTPS來回傳cookie
httponly=False 只能http協議傳輸,無法被JavaScript獲取(不是絕對,底層抓包可以獲取到也可以被覆蓋)
這些參數全都再app.config中進行設置
'SESSION_COOKIE_NAME': 'session',
'SESSION_COOKIE_DOMAIN': None,
'SESSION_COOKIE_PATH': None,
'SESSION_COOKIE_HTTPONLY': True,
'SESSION_COOKIE_SECURE': False,
'SESSION_REFRESH_EACH_REQUEST': True,