2009-10-01 9 views
7

Moja witryna internetowa z wyszukiwarkami Google dostaje błędy w głównym adresie URL dla żądań HEAD, ponieważ ich nie akceptuję. Według this, żądanie HEAD jest dla "testing hypertext links for validity, accessibility, and recent modification"Kiedy powinienem odpowiadać na żądania HTTP HEAD na mojej stronie internetowej

Jaka powinna być moja "normalna" odpowiedź na żądania HEAD?

Zacząłem przyjmować żądania HEAD, aby zapobiec wyświetlaniu błędów w moich dziennikach, ale tylko w głównym adresie URL.

Czy ktoś może wskazać mi właściwy kierunek?

Odpowiedz

7

Zaimplementuj metodę head (podobnie jak w przypadku get), po prostu pomijając zapisywanie ciała. Powinieneś to zrobić dla każdego adresu URL, z którym możesz się połączyć, właśnie dlatego, że dobrze zachowany kontroler, który sprawdza połączenia, powinien używać HEAD, gdy nie potrzebuje ciała.

Najprostszy jest często czynnik poza funkcjonalność get do osobnej metody pomocniczej _foo który zabierze logiczną needbody argumentu - get nazywa self._foo(True), head połączeń self._foo(False). _foo, jeśli widzi swój argument needbody jest fałszywy, może wyskoczyć, gdy tylko wygeneruje wszystkie nagłówki (i musi upewnić się, że nie generuje treści).

+5

Inną opcją w webappie jest zdefiniowanie klasy bazowej, która implementuje głowę, wywołując self.get, a następnie wymazując ciało. Jest to oczywiście nieefektywne, ale pozwala na skuteczniejsze zastąpienie go w każdym indywidualnym przypadku. –

+0

@Nick Jaki jest najlepszy sposób na usunięcie ciała? –

+1

@Bryce 'self.response.clear()'. –

Powiązane problemy