Bewährte Verfahren für den Umgang mit HTTP HEAD-Anfrage mit Django auf App Engine

stimmen
8

Ich erhalte HEAD-Anfragen in meiner Anwendung, und ich frage, auf dem besten Weg, um sie zu behandeln. Die Optionen sind:

  • sie konvertieren zu GETs, Prozess GET normalerweise, dann gilt:
    • Streifen um den Körper (obwohl ich nicht sicher bin , wie - response.content = ''nicht , es zu tun scheint.
    • es scheint, App Engine Auto-Streifen der Körper, eine Warnung „Dropping unerwarteten Körper als Reaktion auf HEAD-Anforderung“ zu geben

Es scheint, diese sauber ist, und kann gut mit Dekorateure oder Middleware geschrieben werden.

  • Fassen HEAD-Anforderung speziell:
    • dies bedeutet, dass ich einen Datastore-Zugang in einigen (viele?) Fällen vermeiden konnte.
    • Es besteht das Risiko, es scheint, dass Middleware, die die Content-Length-Header daran durch diesen Ansatz verhindert werden setzt.

Noch etwas? Welche soll ich tun? Gibt es hier App Engine einen Unterschied machen mit? Gibt es feine Details; wenn ja, gibt es entsprechende Middleware zu verwenden? So zu konvertieren zu bekommen, ist `request.method =„GET“ausreichend (es scheint zu funktionieren)?

Veröffentlicht am 30/12/2009 um 02:24
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
10

Haben Sie die Absicht, für Sie Anwendung HEAD-Anfragen zu behandeln, oder kommen diese von einer anonymen Quelle? Sie sind verpflichtet, schon gar nicht eine HEAD-Anfrage zu ehren. Sie können mit dem Statuscode 405 zurückgeben gerade (Methode nicht erlaubt) und den Header mit GET zulassen liefern oder was auch immer Sie zu handhaben bedeuten.

Ich glaube nicht, dass die manuelle Einstellung request.method zu bekommen, ist sinnvoll; aller Wahrscheinlichkeit nach kehren Sie nur eine Antwort, die größer ist als das, was der Anforderer wollte. Sie wollten nur die Header für die Antwort sehen. Wenn Sie nicht die HEAD behandeln wollen, führen Sie die 405 und Header-Ansatz zulassen.

Im Allgemeinen sendet ein Client eine HEAD-Anfrage, weil sie über keine Behandlung eine vollständige Antwort, intelligent zu sein versuchen, wenn sie nicht brauchen. Sie werden zu überprüfen, ob die Content-Length seit dem letzten Mal geändert hat, dass sie die Antwort sah, oder sie wollen die Last-Modified sehen oder Expires-Header.

Es ist sicherlich gut erzogene für Ihre Anwendung ordnungsgemäß HEAD-Anfragen zu bearbeiten, aber Sie müssen nicht.

Beantwortet am 30/12/2009 um 02:36
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more