首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python Bottle 框架跨路徑 Cookie 讀寫:設定 path 屬性實現多頁面共享

     編輯:更多程式設計知識

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 路徑可見

解決方案:設定 path=/


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_cookieresponse.set_cookie('k', 'v', path='/')官方文件推薦,支援 secret 簽名
response.COOKIESresponse.COOKIES['k'] = 'v'; response.COOKIES['k']['path'] = '/'字典式操作,直觀靈活

實務建議

  • 統一設定 path='/' 避免路徑困擾。
  • 生產環境啟用 secret 簽名防竄改,並設 httponly=True、secure=True (HTTPS)。
  • 登出時呼叫 response.delete_cookie('account', path='/')。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved