Cookies - FastAPI
Configurando Cookies
No FastAPI, a configuração de cookies no servidor pode ser feita usando o método set_cookie
Response
: Nome ou identificador do cookie. É um parâmetro obrigatório.key
: Valor do cookie. Por padrão, é uma string vazia.value
: Tempo de vida do cookie em segundos. Pode ser um número oumax_age
. Quando definido comoNone
, o cookie terá validade apenas durante a sessão atual do navegador (comportamento padrão).None
: Data ou momento em que o cookie expira. Assim comoexpires
, pode ser um número oumax_age
. O padrão é limitar o cookie à sessão atual do navegador.None
: o caminho da URL no qual o cookie será válido. O valor padrão épath
, que representa a raiz da aplicação./
: Domínio ao qual o cookie se aplica. O padrão édomain
.None
: Indica se o cookie será enviado somente em conexões HTTPS. Quando configurado comosecure
, o cookie será transmitido apenas em solicitações seguras. O padrão éTrue
.False
: Define se o cookie estará acessível a scripts JavaScript no cliente. Quando configurado comohttponly
, o cookie será inacessível ao JavaScript, protegendo-o contra ataques como XSS. O padrão éTrue
.False
: Controla o envio de cookies em solicitações cross-origin (entre domínios). O valor padrão ésamesite
, que restringe o envio do cookie na maioria dos cenários cross-origin.lax
O exemplo a seguir demonstra como configurar um cookie chamado last_visit
from fastapi import FastAPI, Response
from datetime import datetime
app = FastAPI()
@app.get("/")
def root(response: Response):
now = datetime.now() # Obtém a data e hora atuais
response.set_cookie(key="last_visit", value=now.isoformat())
return {"message": "Cookie configurado"}
Nesse caso, o cookie last_visit

Também é possível configurar cookies criando um objeto Response
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from datetime import datetime
app = FastAPI()
@app.get("/")
def root():
now = datetime.now() # Obtém a data e hora atuais
response = JSONResponse(content={"message": "Cookie configurado"})
response.set_cookie(key="last_visit", value=now.isoformat())
return response
Aqui, criamos uma resposta JSON explícita e adicionamos o cookie last_visit
Obtendo Cookies
Para acessar cookies no servidor, o FastAPI fornece o objeto Cookie
last_visit
from fastapi import FastAPI, Cookie
app = FastAPI()
@app.get("/")
def root(last_visit: str = Cookie()):
return {"last visit": last_visit}
Nesse exemplo, o valor do cookie last_visit é extraído da solicitação e retornado na resposta.

Lidando com Cookies Opcionais
Se o cookie for obrigatório e não estiver presente na solicitação, o FastAPI lançará uma exceção. Para evitar isso, você pode definir um valor padrão, como None
from fastapi import FastAPI, Cookie
app = FastAPI()
@app.get("/")
def root(last_visit: str | None = Cookie(default=None)):
if last_visit is None:
return {"message": "Este é o seu primeiro acesso ao site"}
else:
return {"message": f"Seu último acesso foi em: {last_visit}"}
Nesse caso, se o cookie last_visit