HTTP - żądania
Klient HTTP wysyła żądanie HTTP do serwera w postaci komunikatu żądania, który zawiera następujący format:
- A Request-line
- Zero or more header (General|Request|Entity) fields followed by CRLF
- An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
- Optionally a message-body
W poniższych sekcjach wyjaśniono każdą z jednostek używanych w komunikacie żądania HTTP.
Linia zapytań
Wiersz żądania zaczyna się od tokenu metody, po którym następuje identyfikator URI żądania i wersja protokołu, a kończy się na CRLF. Elementy oddzielone są spacjami SP.
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Omówmy każdą z części wymienionych w Request-Line.
Metoda żądania
Prośba method wskazuje metodę, która ma zostać wykonana na zasobie określonym przez dane Request-URI. W metodzie rozróżniana jest wielkość liter i zawsze należy ją podawać wielkimi literami. W poniższej tabeli wymieniono wszystkie obsługiwane metody w protokole HTTP / 1.1.
SN | Metoda i opis |
---|---|
1 | GET Metoda GET służy do pobierania informacji z danego serwera przy użyciu podanego URI. Żądania korzystające z GET powinny tylko pobierać dane i nie powinny mieć żadnego innego wpływu na dane. |
2 | HEAD To samo co GET, ale przenosi tylko wiersz stanu i sekcję nagłówka. |
3 | POST Żądanie POST służy do wysyłania danych na serwer, na przykład informacji o kliencie, przesyłania plików itp. Za pomocą formularzy HTML. |
4 | PUT Zastępuje wszystkie bieżące reprezentacje zasobu docelowego przesłaną treścią. |
5 | DELETE Usuwa wszystkie bieżące reprezentacje zasobu docelowego podane przez identyfikator URI. |
6 | CONNECT Ustanawia tunel do serwera identyfikowanego przez dany identyfikator URI. |
7 | OPTIONS Opisz opcje komunikacji dla zasobu docelowego. |
8 | TRACE Wykonuje test zwrotny pętli komunikatów wraz ze ścieżką do zasobu docelowego. |
Identyfikator URI żądania
Identyfikator URI żądania jest jednolitym identyfikatorem zasobu i identyfikuje zasób, do którego należy zastosować żądanie. Poniżej przedstawiono najczęściej używane formularze do określenia identyfikatora URI:
Request-URI = "*" | absoluteURI | abs_path | authority
SN | Metoda i opis |
---|---|
1 | Gwiazdka *jest używany, gdy żądanie HTTP nie dotyczy określonego zasobu, ale samego serwera i jest dozwolone tylko wtedy, gdy zastosowana metoda niekoniecznie ma zastosowanie do zasobu. Na przykład: OPTIONS * HTTP/1.1 |
2 | Plik absoluteURIjest używany, gdy żądanie HTTP jest kierowane do serwera proxy. Proxy jest proszone o przesłanie żądania lub usługi z ważnej pamięci podręcznej i zwrócenie odpowiedzi. Na przykład: GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 |
3 | Najpopularniejszą formą identyfikatora URI żądania jest ta, która służy do identyfikowania zasobu na serwerze pochodzenia lub bramie. Na przykład klient, który chciałby pobrać zasób bezpośrednio z serwera pochodzenia, utworzyłby połączenie TCP z portem 80 hosta „www.w3.org” i wysłałby następujące wiersze: GET /pub/WWW/TheProject.html HTTP/1.1 Host: www.w3.org Zwróć uwagę, że ścieżka bezwzględna nie może być pusta; jeśli nie ma go w oryginalnym URI, MUSI być podany jako „/” (root serwera). |
Żądanie pól nagłówka
Przestudiujemy General-header i Entity-header w osobnym rozdziale, kiedy poznamy pola nagłówka HTTP. Na razie sprawdźmy, jakie są pola nagłówka żądania.
Pola nagłówka żądania umożliwiają klientowi przekazanie dodatkowych informacji o żądaniu oraz o samym kliencie do serwera. Te pola działają jako modyfikatory żądania. Oto lista niektórych ważnych pól nagłówka żądania, których można użyć w zależności od wymagania:
Accept-Charset
Accept-Encoding
Accept-Language
Authorization
Expect
From
Host
If-Match
If-Modified-Since
If-None-Match
If-Range
If-Unmodified-Since
Max-Forwards
Proxy-Authorization
Range
Referer
TE
User-Agent
Możesz wprowadzić własne pola na wypadek, gdybyś miał napisać własnego klienta i serwer WWW.
Przykłady wiadomości żądania
Teraz połączmy to wszystko razem, aby utworzyć żądanie HTTP do pobrania hello.htm strona z serwera WWW działającego w witrynie tutorialspoint.com
GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Tutaj nie wysyłamy żadnych danych żądania do serwera, ponieważ pobieramy zwykłą stronę HTML z serwera. Connection to nagłówek ogólny, a pozostałe nagłówki to nagłówki żądań. Poniższy przykład pokazuje, jak wysłać dane formularza na serwer przy użyciu treści komunikatu żądania:
POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
licenseID=string&content=string&/paramsXML=string
Tutaj podany adres URL /cgi-bin/process.cgi zostanie użyty do przetworzenia przekazanych danych i odpowiednio, zostanie zwrócona odpowiedź. Tutajcontent-type informuje serwer, że przekazywane dane to proste dane formularza internetowego i lengthbędzie rzeczywistą długością danych umieszczonych w treści wiadomości. Poniższy przykład pokazuje, jak możesz przekazać zwykły XML na swój serwer sieciowy:
POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://clearforest.com/">string</string>