python flask 設定cookie

奥兰王子發表於2024-04-11

在Python Flask中,可以使用set_cookie方法來設定cookie。下面是不同的實現方法:

方法1:

pythonfrom flask import Flask, make_response

app = Flask(__name__)

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

if __name__ == '__main__':
app.run()

方法2:

pythonfrom flask import Flask, make_response

app = Flask(__name__)

@app.route('/')
def index():
response = make_response('Hello World!')
response.headers['Set-Cookie'] = 'cookie_name=cookie_value'
return response

if __name__ == '__main__':
app.run()

方法3:

pythonfrom flask import Flask, Response

app = Flask(__name__)

@app.route('/')
def index():
resp = Response('Hello World!')
resp.set_cookie('cookie_name', 'cookie_value')
return resp

if __name__ == '__main__':
app.run()

以上三種方法都可以在Flask中設定cookie。其中,方法1使用了make_response函式建立響應物件,並呼叫set_cookie方法設定cookie。方法2透過直接設定response.headers字典來設定cookie。方法3則是建立了一個Response物件並呼叫set_cookie方法設定cookie。請根據自己的需求選擇適合的方法來設定cookie。

在Flask中,當你使用set_cookie方法設定cookie時,可以透過max_age引數來指定cookie的過期時間。max_age是以秒為單位的持續時間,表示cookie應該保持有效的時間。如果max_age是一個負數,那麼cookie將是一個會話cookie,意味著它將在瀏覽器視窗關閉時過期。

以下是如何在Flask中設定帶有max_age的cookie的示例:

pythonfrom flask import Flask, make_response

app = Flask(__name__)

@app.route('/')
def index():
# 建立一個響應物件
resp = make_response('Hello World!')

# 設定cookie,指定cookie的名字、值、以及過期時間(以秒為單位)
# 這裡設定max_age為3600,表示cookie將在1小時後過期
resp.set_cookie('cookie_name', 'cookie_value', max_age=3600)

return resp

if __name__ == '__main__':
app.run()

如果你更喜歡直接在路由函式中返回字串作為響應體,Flask會自動為你建立一個響應物件。在這種情況下,你可以使用Response類來設定max_age

pythonfrom flask import Flask, Response

app = Flask(__name__)

@app.route('/')
def index():
# 直接返回字串作為響應體,Flask會自動建立響應物件
# 使用Response類來設定cookie的max_age
return Response('Hello World!', headers={
'Set-Cookie': 'cookie_name=cookie_value; Max-Age=3600'
})

if __name__ == '__main__':
app.run()

請注意,在Set-Cookie頭中設定Max-Age時,其值必須是整數,並且單位是秒。

如果你希望cookie在瀏覽器關閉時過期(即會話cookie),你可以省略max_age引數,或者將其設定為-1

pythonresp.set_cookie('cookie_name', 'cookie_value', max_age=-1)

或者在Set-Cookie頭中不指定Max-Age屬性:

pythonheaders={
'Set-Cookie': 'cookie_name=cookie_value'
}

這樣設定的cookie將只會在當前瀏覽器會話中有效。

相關文章