如何在FastAPI TestClient中设置带expires或max_age的Cookie?
FastAPI的TestClient基于requests.Session,其cookies属性是RequestsCookieJar对象,你可以通过以下两种方式设置带有max_age或expires的Cookie:
方法一:直接调用set方法传入参数
RequestsCookieJar的set方法支持通过关键字参数传入max_age或expires,无需重新赋值test_client.cookies:
test_client.cookies.set( cookie_key, str(cookie_value), path=path, max_age=3600, # 有效期1小时,单位为秒 # 或者设置expires为时间戳或带时区的datetime对象 # expires=datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(hours=1) )
方法二:构造Cookie实例添加
如果需要更精细的控制,可以手动构造标准库的Cookie对象,再添加到CookieJar中:
from http.cookies import Cookie import datetime # 构造Cookie对象 cookie = Cookie( name=cookie_key, value=str(cookie_value), path=path, max_age=3600, # expires接受时间戳,这里设置为1小时后 expires=(datetime.datetime.utcnow() + datetime.timedelta(hours=1)).timestamp(), secure=False, # 根据实际场景设置是否仅HTTPS传输 httponly=False, # 根据实际场景设置是否允许JS读取 ) # 添加到TestClient的CookieJar test_client.cookies.set_cookie(cookie)
注意:原代码中test_client.cookies = cookies是多余操作,set或set_cookie方法会直接修改原CookieJar对象。
内容的提问来源于stack exchange,提问作者Garrett
相关产品推荐
相关产品推荐

