Beste praksis for håndtering av HTTP HEAD forespørsel med Django på App Engine

stemmer
8

Jeg mottar HEAD forespørsler i søknaden min, og lurer på om den beste måten å håndtere dem. Alternativene er:

  • konvertere dem til blir, prosess GET normalt, deretter:
    • strippe kroppen (selv om jeg ikke er sikker på hvordan - response.content = ''ser ikke ut til å gjøre det.
    • det virker app motor auto-strimler kroppen, noe som gir en advarsel Slippe uventet kroppen som svar på HEAD forespørsel

Det synes dette er ren, og kan skrives pent med dekoratører eller mellomvare.

  • Håndtere hver HEAD forespørsel spesielt:
    • Dette betyr at jeg kan unngå en Datastore tilgang i noen (mange?) tilfeller.
    • Det er en risiko, tilsynelatende, at mellomvare som setter Content-lengde header vil bli forhindret fra å gjøre det med denne tilnærmingen.

Alt annet? Hvilken bør jeg gjøre? Har bruker App Engine gjøre en forskjell her? Er det subtile detaljer; hvis så, er det hensiktsmessig mellomvare å bruke? Å konvertere til GET, er `request.method = GET tilstrekkelig (det ser ut til å fungere)?

Publisert på 29/12/2009 klokken 23:24
kilden bruker
På andre språk...                            


1 svar

stemmer
11

Har du tenkt på at du program for å behandle HEAD forespørsler, eller er disse kommer fra noen anonym kilde? Du absolutt ikke er forpliktet til å respektere en HEAD forespørsel. Du kan bare gå tilbake med en statuskode på 405 (Metode ikke tillatt) og gi Tillat header med GET eller hva du mener å håndtere.

Jeg tror ikke det manuelt sette request.method å få er meningsfylt; etter all sannsynlighet, er du bare returnere et svar som er større enn det som anmoder ønsket. De ville bare se overskriftene for responsen. Hvis du ikke ønsker å håndtere HEAD, gjør 405 og Tillat header tilnærming.

Vanligvis sender en klient en HEAD forespørselen fordi de prøver å være smart om ikke å håndtere en full respons hvis de ikke må. De sjekker for å se om Content-Length har endret seg siden forrige gang at de så responsen, eller de ønsker å se Last-Modified eller Utløper spissen.

Det er sikkert godt opptrådt for din søknad til grasiøst håndtere HEAD forespørsler, men du trenger ikke å.

Svarte 29/12/2009 kl. 23:36
kilden bruker

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