Trabalhando com Cookies - Python
Os cookies são uma forma simples e amplamente utilizada para armazenar informações do usuário no cliente. Eles ficam armazenados no dispositivo do cliente e podem ser configurados tanto pelo servidor quanto pelo próprio cliente. Como os cookies são enviados junto com cada requisição ao servidor, eles têm um limite de tamanho máximo de 4096 bytes. A seguir, abordamos como configurar e recuperar cookies em aplicações Django.
Definindo Cookies
Para enviar cookies ao cliente, o método set_cookie()
set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None)
Os parâmetros desse método permitem configurar o comportamento dos cookies:
: Nome ou identificador do cookie.key
: Valor associado ao cookie.value
: Tempo de vida do cookie em segundos. Pode ser um objetomax_age
, um número inteiro outimedelta
(padrão), o que indica que o cookie será apagado ao final da sessão do navegador.None
: Data e hora de expiração do cookie, podendo ser uma string no formato "expires
" ou um objetoWdy, DD-Mon-YY HH:MM:SS GMT
.datetime.datetime
: Caminho no qual o cookie será válido.path
: Domínio ao qual o cookie será aplicado.domain
: Determina se o cookie será enviado apenas em conexões HTTPS. Quandosecure
, o envio ocorre apenas via HTTPS.True
: Controla o acesso do JavaScript ao cookie. Configurar comohttponly
impede que scripts no cliente leiam o cookie.True
: Especifica se o cookie será enviado em requisições entre domínios. Valores possíveis:samesite
e'Strict'
: Bloqueiam o envio em requisições de outros domínios.'Lax'
: Permite o envio em requisições entre domínios (padrão).'None'
A classe HttpResponse
set_signed_cookie()
salt
Exemplo de Configuração de Cookies
O exemplo abaixo ilustra a definição de cookies no arquivo views.py
from django.http import HttpResponse
def set_cookie(request):
username = request.GET.get("username", "Undefined")
response = HttpResponse(f"Hello {username}")
response.set_cookie("username", username)
return response
Neste exemplo, o valor do parâmetro username
username
No arquivo urls.py
/set
from django.urls import path
from hello import views
urlpatterns = [
path("set", views.set_cookie),
]
Ao acessar a URL /set
username
Recuperando Cookies
Para acessar cookies não criptografados, o atributo COOKIES
HttpRequest
Para cookies criptografados configurados com set_signed_cookie
get_signed_cookie()
HttpRequest
get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
Os parâmetros desse método são:
: Nome do cookie a ser recuperado.key
: Valor padrão retornado caso o cookie não seja encontrado.default
: Tempo de vida máximo do cookie em segundos.max_age
: A mesma chave de criptografia utilizada na configuração do cookie.salt
Exemplo de Recuperação de Cookies
O exemplo abaixo ilustra a recuperação de cookies previamente configurados:
def get_cookie(request):
username = request.COOKIES.get("username", "Guest")
return HttpResponse(f"Hello {username}")
Neste exemplo, o valor do cookie username
"Guest"
No arquivo urls.py,
/get
from django.urls import path
from hello import views
urlpatterns = [
path("set", views.set_cookie),
path("get", views.get_cookie),
]
Ao acessar a URL /get
username