Setzen Sie mehrere Cookies mit dem gleichen Namen in Django

Gibt es eine Möglichkeit, Cookies mit dem gleichen Namen für mehrere Domains oder Pfade in der gleichen Antwort zu setzen? Das folgende setzt nur das zweite Cookie ein:

response.set_cookie("alice", "123", domain='sub.example.com') response.set_cookie("alice", "456", domain='example.com') 

Ich sah die Django-Implementierung an . Es verwendet ein Wörterbuch zum Speichern von Cookies:

 self.cookies[key] = value 

So kann Django nicht mehrere Cookies mit dem gleichen Namen in der gleichen Antwort setzen.

Soll das so funktionieren? Siehst du einen Weg, um diese Beschränkung zu umgehen?

Aktualisieren

Wird als Fehler gemeldet: https://code.djangoproject.com/ticket/18908

2 Solutions collect form web for “Setzen Sie mehrere Cookies mit dem gleichen Namen in Django”

Das kann nicht genau auf die Frage antworten, aber immer noch.

Dies scheint Problem mit der Django-Implementierung, da es nur mit Cookie-Namen als Schlüssel in dict. In der realen Welt kann man Cookies mit gleichem Namen mit mehreren Werten haben, sofern entweder Domain oder Pfad unterschiedlich ist. Ich fand diese nützlichen HTTP-Cookies erklärt

Mehr Referenz:

RFC2965

Http-Plätzchen

Es ist ein einfaches Dict, um das Cookie zu speichern, aber beim Rendering der Cookies auf die Antwort headers django einfach cookies.values() es sieht nicht auf die Tasten.

Zu diesem Zweck kannst du Lust bekommen (das ist Python 3.5):

 # python 3.5 specific unpacking # Note that according to the RFC, cookies ignore the ports hostname, *_ = request.get_host().split(':') # set the cookie to delete response.delete_cookie(settings.ACCESS_TOKEN_COOKIE_KEY, domain=settings.COOKIE_DOMAIN) # pull it out of the cookie storage # and delete it so we can write an new one cookie_domain_cookie = response.cookies[settings.ACCESS_TOKEN_COOKIE_KEY] del response.cookies[settings.ACCESS_TOKEN_COOKIE_KEY] # write the new cookie response.delete_cookie(settings.ACCESS_TOKEN_COOKIE_KEY, domain=hostname) # do the same as we did above, probably not strictly necessary hostname_cookie = response.cookies[settings.ACCESS_TOKEN_COOKIE_KEY] del response.cookies[settings.ACCESS_TOKEN_COOKIE_KEY] # make new keys for the cookies cookie_domain_cookie_key = "{}:{}".format(settings.ACCESS_TOKEN_COOKIE_KEY, settings.COOKIE_DOMAIN) hostname_cookie_key = "{}:{}".format(settings.ACCESS_TOKEN_COOKIE_KEY, hostname) # set them response.cookies[cookie_domain_cookie_key] = cookie_domain_cookie response.cookies[hostname_cookie_key] = hostname_cookie 
  • Hauptfeldname (document = True)
  • Wie implementiere ich Time Event Scheduler in Python?
  • Django Rest_Framework Serializer mit innerer Beziehung
  • Gibt es eine Funktion in Django / Python ähnlich wie PHP Flush (), die mich einen Teil der HTTP-Antwort an Clients senden lässt?
  • In Testfällen (Unit-Testing) kann Django Pre_save Signal nicht gefangen werden
  • Wie kann man die Zeitzone in Django einstellen?
  • Django Was ist umgekehrte Beziehung?
  • Wie arbeite ich mit unsaved viele-to-many Beziehungen in django?
  • Empfohlene Django-Setup?
  • Django Admin - mache alle Felder readonly
  • Django admin inline: select_related
  • Python ist die beste Programmiersprache der Welt.