Ich erhalte HEAD-Anfragen in meiner Anwendung und frage mich, wie ich sie am besten behandeln kann. Die Optionen sind:Best Practice für die Behandlung der HTTP HEAD-Anfrage mit Django auf App Engine
- wandeln sie in GETs, Prozess GET normalerweise, dann:.
- den Körper Streifen (obwohl ich nicht sicher bin, wie -
response.content = ''
es nicht zu tun scheint - es scheint app Engine auto-Streifen den Körper, eine Warnung „Dropping unerwartete Körper als Reaktion auf HEAD-Anfrage“
- den Körper Streifen (obwohl ich nicht sicher bin, wie -
Es scheint, das ist sauber und kann geschrieben werden schön wir geben Dekoratoren oder Middleware.
- Handle jeder HEAD-Anfrage speziell:
- dies bedeutet, dass ich ein Datastore-Zugang in einigen (vielen?) Vermeiden könnten Fälle.
- Offensichtlich besteht die Gefahr, dass Middleware, die den Content-length-Header setzt, durch diesen Ansatz daran gehindert wird.
Sonst noch etwas? Was soll ich tun? Macht der Einsatz von App Engine hier einen Unterschied? Gibt es subtile Details? Wenn ja, gibt es eine geeignete Middleware? Um in GET zu konvertieren, ist `request.method =" GET "ausreichend (es scheint zu funktionieren)?
* Django entfernt automatisch den Inhalt von Antworten auf HEAD-Anfragen, während die Kopfzeilen unverändert bleiben, so dass Sie HEAD-Anfragen genauso behandeln können wie GET-Anfragen in Ihren Ansichten. * Ab Version [16115] (http: //code.djangoproject .com/changeset/16115) Django enthält einen handlichen [require_safe] (http://docs.djangoproject.com/de/dev/topics/http/decorators/#django.views.decorators.http.require_safe) Dekorator, der Anfragen einschränkt GET und HEAD. –
Beachten Sie, dass die HEAD-Anfrage vollständig von einer View-Funktion verarbeitet wird (und sogar requet.GET wird ausgefüllt). Der einzige Unterschied scheint ein leerer "response.content" zu sein. –