Python - nagłówki HTTP
Żądanie i odpowiedź między klientem a serwerem obejmują nagłówek i treść wiadomości. Nagłówki zawierają informacje specyficzne dla protokołu, które pojawiają się na początku nieprzetworzonej wiadomości wysyłanej przez połączenie TCP. Treść wiadomości jest oddzielona od nagłówków pustą linią.
Przykład nagłówków
Nagłówki w odpowiedzi http można podzielić na następujące typy. Poniżej znajduje się opis nagłówka i przykład.
Cache-Control
Pole ogólnego nagłówka Cache-Control służy do określenia dyrektyw, które MUSZĄ być przestrzegane przez cały system buforowania. Składnia jest następująca:
Cache-Control : cache-request-directive|cache-response-directive
Klient lub serwer HTTP może używać rozszerzenia Cache-controlnagłówek ogólny do określenia parametrów pamięci podręcznej lub żądania określonych rodzajów dokumentów z pamięci podręcznej. Dyrektywy buforowania są określone na liście oddzielonej przecinkami. Na przykład:
Cache-control: no-cache
Połączenie
Pole Connection general-header umożliwia nadawcy określenie opcji, które są wymagane dla tego konkretnego połączenia i nie mogą być przekazywane przez serwery proxy w dalszych połączeniach. Poniżej znajduje się prosta składnia używania nagłówka połączenia:
Connection : "Connection"
HTTP / 1.1 definiuje opcję „zamknij” połączenia dla nadawcy, aby zasygnalizować, że połączenie zostanie zamknięte po zakończeniu odpowiedzi. Na przykład:
Connection: close
Domyślnie protokół HTTP 1.1 korzysta z połączeń trwałych, w przypadku których połączenie nie jest automatycznie zamykane po transakcji. Z drugiej strony protokół HTTP 1.0 nie ma domyślnie trwałych połączeń. Jeśli klient w wersji 1.0 chce korzystać z połączeń trwałych, używa rozszerzeniakeep-alive parametr w następujący sposób:
Connection: keep-alive
Data
Wszystkie znaczniki daty / czasu HTTP MUSZĄ być przedstawione w czasie Greenwich (GMT), bez wyjątku. Aplikacje HTTP mogą używać dowolnej z następujących trzech reprezentacji znaczników daty / czasu:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
Transfer-Encoding
Pole nagłówka Transfer-Encoding general-header wskazuje, jaki typ transformacji został zastosowany do treści wiadomości w celu bezpiecznego przesłania jej między nadawcą a odbiorcą. To nie to samo, co kodowanie treści, ponieważ kodowanie transferu jest właściwością wiadomości, a nie treścią jednostki. Składnia pola nagłówka Transfer-Encoding jest następująca:
Transfer-Encoding: chunked
Wszystkie wartości kodowania transferu nie uwzględniają wielkości liter.
Aktualizacja
Upgrade ogólnego nagłówka pozwala klientowi określić, jakie protokoły komunikacyjne obsługuje dodatkowy i chciałby używać jeżeli znaleziska serwera za stosowne protokoły przełącznika. Na przykład:
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Nagłówek Upgrade ma zapewnić prosty mechanizm przejścia z HTTP / 1.1 na inny, niekompatybilny protokół.
Przez
Via ogólnego nagłówka musi być używany przez bramy i serwerów proxy, aby wskazać pośrednich protokoły i odbiorców. Na przykład komunikat żądania może zostać wysłany z klienta użytkownika HTTP / 1.0 do wewnętrznego serwera proxy o nazwie „fred”, który używa protokołu HTTP / 1.1 do przekazania żądania do publicznego serwera proxy w domenie nowhere.com, który kończy żądanie przez przekazując go do serwera pochodzenia pod adresem www.ics.uci.edu. Żądanie otrzymane przez www.ics.uci.edu będzie miało wtedy następujące pole nagłówka Via:
Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Nagłówek Upgrade ma zapewnić prosty mechanizm przejścia z HTTP / 1.1 na inny, niekompatybilny protokół.
Ostrzeżenie
Warning ogólnego nagłówka służy do przeprowadzenia dodatkowych informacji na temat stanu lub przekształcenia wiadomości, które nie mogą zostać odzwierciedlone w komunikacie. Odpowiedź może zawierać więcej niż jeden nagłówek Warning.
Warning : warn-code SP warn-agent SP warn-text SP warn-date
Przykład
W poniższym przykładzie korzystamy z modułu urllib2, aby uzyskać odpowiedź za pomocą urlopen. Następnie stosujemy metodę info (), aby uzyskać informacje nagłówka dla tej odpowiedzi.
import urllib2
response = urllib2.urlopen('http://www.tutorialspoint.com/python')
html = response.info()
print html
Po uruchomieniu powyższego programu otrzymujemy następujący wynik -
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Origin: *
Cache-Control: max-age=2592000
Content-Type: text/html; charset=UTF-8
Date: Mon, 02 Jul 2018 11:06:07 GMT
Expires: Wed, 01 Aug 2018 11:06:07 GMT
Last-Modified: Sun, 01 Jul 2018 21:05:38 GMT
Server: ECS (tir/CDD1)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 22063
Connection: close