Wenn ich ab dem 17. Februar 2020 lebte, ohne zu wissen, dass der Standardwert des Attributs "Gleiche Site" in Chrome 80 von "Keine" in "Lax" geändert wird, war ich ungeduldig mit einem Problem auf der Operationssite. Als ich nach einer Möglichkeit suchte, das Same-Site-Attribut für Cookies in Django festzulegen, gab es einen Unterschied in den Einstellungen zwischen Django 2 und 3, daher möchte ich es als Memo behalten.
Der einfache Weg ist, das Paket zu verwenden. Ich verwende immer noch Django2 und das Paket "django-cookies-samesite" schien nützlich zu sein, daher habe ich beschlossen, es zum Festlegen des Same-Site-Attributs zu verwenden. https://pypi.org/project/django-cookies-samesite/
Es ist einfach einzurichten, fügen Sie es einfach zu MIDDLEWARE_CLASSES hinzu und definieren Sie die Variablen in der Einstellungsdatei.
MIDDLEWARE_CLASSES = (
'django_cookies_samesite.middleware.CookiesSameSite',
...
)
SESSION_COOKIE_SAMESITE = 'None'
Dies ist auch praktisch, da der Cookie-Name optional festgelegt und die gleiche Site aller Cookies zwangsweise neu geschrieben werden kann.
Wenn Sie es selbst hinzufügen, sieht es so aus. Dies ist ebenfalls einfach, kann jedoch etwas ärgerlich sein, wenn Sie an verschiedenen Stellen Cookies setzen.
response = HttpResponse('OK')
response.cookies[key]['samesite'] = 'None'
In Django3 wurde das vorhandene set_cookie verbessert, sodass Sie eine gleiche Site übergeben können. Das ist viel sauberer.
response = HttpResponse('OK')
response.set_cookie(key, value, secure=True, samesite='None')
Im Gegensatz zu Django2 handelt es sich jedoch nicht um einen Prozess in Middleware. Daher kann es problematisch sein, dass Sie ihn einzeln festlegen müssen.
Ich habe nicht die Angewohnheit, Chrom so oft zu schließen, daher war es schwierig, dieses Problem in meiner Umgebung zu bemerken, aber die Lösung selbst war relativ einfach.
Recommended Posts