2012-08-01 10 views
7

Czy istnieją nagłówki, które można wysyłać z żądaniem HTTP, które nakazują serwerowi internetowemu, aby wysyłał tylko nagłówki w odpowiedzi i treści bez treści?Wysyłanie żądania HTTP, które mówi serwerowi, aby zwrócił tylko nagłówki i brak treści?

Używam cURL, aby wysyłać takie żądania, ale technicznie zakładam, że powinno być możliwe, gdy prosty nagłówek zostanie wysłany jako część żądania.

Na przykład istnieje 304 niezmodyfikowany kod odpowiedzi HTTP. Po wysłaniu żądania do serwera przy użyciu znacznika pamięci podręcznej lub informacji o czasie trwania, serwer może je wykryć i tylko zwracać nagłówki jako odpowiedź, która nakazuje agentowi użytkownika użycie pamięci podręcznej jako odpowiedzi. Oznacza to, że odpowiedź serwera jest bardzo, bardzo niewielka, jeśli chodzi o przepustowość.

Ale czy istnieje nagłówek, który można wysłać do serwerów, które powodują, że serwer zwraca tylko nagłówek i treść bez treści?

Chodzi o to, aby żądania HTTP, które w przeciwnym razie mogły zwrócić dużą ilość danych, były bardzo małe. Takich jak wywołanie API, które zwróci dane JSON lub dziennik, gdy w rzeczywistości interesuje się tylko klientem użytkownika, upewniając się, że prośba została zrealizowana i nic więcej. Ma to na celu zminimalizowanie przepustowości do iz serwera w przypadkach, gdy ciało może istnieć, ale nie jest konieczne w żaden sposób w kontekście działania klienta.

Chociaż możliwe byłoby zaprojektowanie interfejsu API, który nasłuchuje określonego niestandardowego nagłówka lub czegoś innego, wolałbym nie podążać w tym kierunku, chyba że będę musiał. Ale nie udało mi się znaleźć, czy istnieje standardowy sposób, aby wysłać żądanie HTTP, które mówi serwerowi, aby nie wysyłał treści?

Odpowiedz

14

Jeśli serwer go obsługuje, istnieje akcja HEAD (w przeciwieństwie do GET lub POST). To oznacza, że ​​serwer wysyła tylko nagłówki i nie ma ciała.

Metoda HEAD jest identyczna z GET, z tym że serwer NIE MOŻE zwraca treść wiadomości w odpowiedzi.

2

Poszukujesz czasownika HEAD. Jeśli używasz CURL PHP, będzie to rade:

curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($c, CURLOPT_CUSTOMREQUEST, 'HEAD'); 
curl_setopt($c, CURLOPT_HEADER, 1); 
curl_setopt($c, CURLOPT_NOBODY, true); 

jeśli używasz PHP chociaż (a może ona bardzo dobrze również liczyć w różnych sytuacjach), skrypt będzie nadal prowadzony until any output is sent (the uwaga pod REQUEST_METHOD). Więc jeśli martwisz się o stres serwera, możesz potrzebować czegoś innego, jeśli to pasuje.

Dla mnie wygląda na to, że bardziej poszukujesz "pingowania", więc dlaczego nie po prostu poprosić o plik, który nic nie robi, ale zwraca OK, może nawet tylko OK 200 OK (np. Pusty plik)?

+0

Szukałem żądania HEAD, tak. Głównie szukałem sposobu na zmniejszenie przepustowości, a nie stresu serwera z generowania treści (inaczej sobie poradzę). Po prostu szukałem znormalizowanego sposobu, a nie jakiejś reguły lub parametru interfejsu API, które to powodują. Ale dzięki! – kingmaple

Powiązane problemy