Paramètre d'attribut de même site du cookie dans Django

Contexte

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.

Pour Django2

Lors de l'utilisation d'un package

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.

Ajoutez votre propre même site

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'

Pour Django 3

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.

la fin

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

Paramètre d'attribut de même site du cookie dans Django
Obtenir les paramètres de requête pour les requêtes GET avec Django
Modèle dans Django
Prise en charge de l'internationalisation avec Django 1.9
Faites une recherche ambiguë pour mysql dans Django
Formulaire à Django
Notes d'apprentissage pour la fonction migrations dans le framework Django (2)
List, méthode pour les ressources imbriquées dans le framework Django REST
Notes d'apprentissage pour la fonction migrations dans le framework Django (3)
Notes d'apprentissage pour la fonction migrations dans le framework Django (1)
Modifications du modèle dans Django
Résumé des points d'achoppement à Django pour la première fois
Meilleures pratiques pour la gestion dynamique des messages LINE Flex dans Django