A partir du 17 février 2020, si je vivais sans savoir que la valeur par défaut de l'attribut Same-Site passera de None à Lax dans Chrome 80, j'étais impatient avec un problème sur le site d'opération. Ainsi, lorsque je cherchais un moyen de définir l'attribut Same-Site pour les cookies dans Django, il y avait une différence dans les paramètres entre Django 2 et 3, donc je voudrais le garder comme mémo.
Le moyen le plus simple est d'utiliser le package.
J'utilise toujours Django2 et le package django-cookies-samesite
me semblait utile, j'ai donc décidé de l'utiliser pour définir l'attribut Same-Site.
https://pypi.org/project/django-cookies-samesite/
C'est facile à configurer, il suffit de l'ajouter à MIDDLEWARE_CLASSES et de définir les variables dans le fichier de paramètres.
MIDDLEWARE_CLASSES = (
'django_cookies_samesite.middleware.CookiesSameSite',
...
)
SESSION_COOKIE_SAMESITE = 'None'
Il est également pratique car il dispose d'une option pour définir le nom du cookie et réécrire de force le MÊME SITE de tous les cookies.
Si vous l'ajoutez vous-même, cela ressemblera à ceci. C'est également facile, mais cela peut être un peu gênant si vous avez des paramètres de cookies à divers endroits.
response = HttpResponse('OK')
response.cookies[key]['samesite'] = 'None'
Dans Django3, le set_cookie existant a été amélioré afin que vous puissiez passer un même site. C'est beaucoup plus propre.
response = HttpResponse('OK')
response.set_cookie(key, value, secure=True, samesite='None')
Cependant, contrairement à Django2, ce n'est pas un processus dans Middleware, il peut donc être gênant que vous deviez le définir un par un.
Je n'ai pas l'habitude de trop fermer Chrome, il était donc difficile de remarquer ce problème dans mon environnement, mais le correctif en lui-même était relativement simple.
Recommended Posts