Bottle 預設 Cookie 僅在當前路徑可讀。跨路徑(如 /login 寫入、/admin 讀取)需顯式設定 path 屬性為共同父路徑或根路徑 /。
@route('/login', method='POST')
def login():
if check_user(user, pwd):
response.set_cookie("account", user, secret='key')
# 此 Cookie 僅在 /login 路徑可見
from bottle import request, response
@route('/login', method='POST')
def login():
user = request.POST['user']
pwd = request.POST['passwd']
if check_user(user, pwd):
response.COOKIES['account'] = user
response.COOKIES['account']['path'] = '/admin' # 或 '/'
else:
# 登入失敗處理
pass
@route('/admin')
def admin():
user = request.COOKIES.get('account')
if user:
# 驗證通過
pass
path:Cookie 可見路徑前綴,預設為當前路徑。domain:可見域名,預設當前域名。max-age / expires:有效期。secure:僅 HTTPS 傳輸。httponly:防止 JavaScript 存取(防 XSS)。| 方法 | 範例 | 特點 |
|---|---|---|
| response.set_cookie | response.set_cookie('k', 'v', path='/') | 官方文件推薦,支援 secret 簽名 |
| response.COOKIES | response.COOKIES['k'] = 'v'; response.COOKIES['k']['path'] = '/' | 字典式操作,直觀靈活 |
path='/' 避免路徑困擾。secret 簽名防竄改,並設 httponly=True、secure=True (HTTPS)。response.delete_cookie('account', path='/')。