Ricevo richieste HEAD nella mia applicazione e mi chiedo quale sia il modo migliore per gestirle. Le opzioni sono:Best practice per la gestione della richiesta HEAD HTTP con Django su App Engine
- convertirli in Gets, processo GET normalmente, quindi:.
- spellare il corpo (anche se non sono sicuro di come -
response.content = ''
non sembra farlo - esso sembra auto-strisce App engine il corpo, dando un avvertimento "Dropping corpo inaspettato in risposta alla richiesta HEAD"
- spellare il corpo (anche se non sono sicuro di come -
sembra che questo è pulito, e può essere scritta noi ben decoratori o middleware.
- gestire ogni richiesta HEAD appositamente:
- questo significa ho potuto evitare un accesso DataStore in alcuni (molti?) Casi.
- Esiste il rischio, apparentemente, che il middleware che imposta l'intestazione Content-length sia impedito da tale approccio.
C'è altro? Quale dovrei fare? L'utilizzo di App Engine fa la differenza qui? Ci sono dettagli sottili? se è così, c'è il middleware appropriato da usare? Per convertire in GET, `request.method =" GET "è sufficiente (sembra funzionare)?
* Django elimina automaticamente il contenuto delle risposte alle richieste HEAD lasciando invariate le intestazioni, pertanto è possibile gestire le richieste HEAD esattamente come le richieste GET nelle viste. * A partire dalla revisione [16115] (http: //code.djangoproject .com/changeset/16115) Django contiene utile [require_safe] (http://docs.djangoproject.com/en/dev/topics/http/decorators/#django.views.decorators.http.require_safe) decoratore, che limita le richieste PER OTTENERE E TESTA. –
Si noti inoltre che la richiesta HEAD è completamente elaborata da una funzione di visualizzazione (e anche requet.GET verrà popolata). L'unica differenza sembra essere un 'response.content' vuoto. –