HTTP
- Afrikaans
- l`rby@
- Asturianu
- Az@rbaycanca
- toerkhjh
- baaNlaa
- Min Nan Yu / Ban-lam-gi
- Belaruskaia
- Belaruskaia (tarashkevitsa)
- B'lgarski
- Bosanski
- Catala
- Cestina
- Cymraeg
- Dansk
- Deutsch
- Eesti
- Ellenika
- English
- Espanol
- Esperanto
- Euskara
- frsy
- Foroyskt
- Francais
- Gaeilge
- Galego
- gujraatii
- hangugeo
- Hayeren
- hindii
- Hrvatski
- Ido
- Bahasa Indonesia
- Islenska
- Italiano
- `bryt
- K'azak'sha
- Latina
- Latviesu
- Letzebuergesch
- Lietuviu
- Lombard
- Magyar
- Makedonski
- mlyaallN
- mraatthii
- Bahasa Melayu
- Mongol
- Nederlands
- nepaal bhaassaa
- Ri Ben Yu
- Norsk bokmal
- Norsk nynorsk
- Olyk marii
- pNjaabii
- Piemonteis
- Portugues
- Romana
- Russkii
- Shqip
- Simple English
- sndhy
- Slovencina
- Slovenscina
- Srpski / srpski
- Srpskohrvatski / srpskokhrvatski
- Suomi
- Svenska
- Tagalog
- tmilll
- telugu
- aithy
- Toch'iki
- Turkce
- Turkmence
- Ukrayins'ka
- Veneto
- Tieng Viet
- Voro
- Wen Yan
- Winaray
- Wu Yu
- Yoruba
- Yue Yu
- Zazaki
- Zhong Wen
HTTP (ang. Hypertext Transfer Protocol) - protokol stworzony przez Tima Bernersa-Lee na potrzeby komunikacji miedzy klientem a serwerem w sieci WWW (ang. World Wide Web). Najnowsza specyfikacje HTTP stanowi dokument RFC 2616 |. Przy pomocy protokolu klienci HTTP komunikuja sie z serwerami, zamawiajac pliki skladajace sie na strony internetowe oraz dostarczaja niezbedne do tego informacje, np. tresci wprowadzane w formularzach.
Okresla on forme zadan klienta (tj. np. przegladarki www) dotyczacych danych oraz forme odpowiedzi serwera na te zadania. W oryginalnych implementacjach byl protokolem bezstanowym (ang. stateless), bowiem nie zachowywal zadnych informacji o poprzednich transakcjach z klientem. Pozwalalo to znacznie zmniejszyc obciazenie serwera, jednak jest klopotliwe w sytuacji, gdy np. trzeba zapamietac konkretny stan dla uzytkownika, ktory wczesniej laczyl sie juz z serwerem. Jeszcze w latach 90. XX wieku firma Netscape wprowadzila poczatkowo nieformalne, a nastepnie ustandaryzowane rozszerzenie znane jako ciasteczka. Inne podejscia to m.in. sesje po stronie serwera, ukryte parametry - gdy aktualna strona zawiera formularz - oraz parametry umieszczone w URL-u (jak np. /index.php?userid=3).
Serwery obslugujace HTTP standardowo nasluchuja na porcie TCP numer 80[1].
W 2015 opublikowana zostala kolejna wersja protokolu HTTP/2, a w 2022 kolejna HTTP/3.
Metody HTTP
[edytuj | edytuj kod]- GET - pobranie zasobu wskazanego przez URI, moze miec postac warunkowa, jesli w naglowku wystepuja pola warunkowe takie jak ,,If-Modified-Since"
- HEAD - pobiera informacje o zasobie, stosowane do sprawdzania dostepnosci zasobu
- PUT - przyjecie danych przesylanych od klienta do serwera, najczesciej, aby zaktualizowac wartosc encji
- POST - przyjecie danych przesylanych od klienta do serwera (np. wysylanie zawartosci formularzy)
- DELETE - zadanie usuniecia zasobu, wlaczone dla uprawnionych uzytkownikow
- OPTIONS - informacje o opcjach i wymaganiach istniejacych w kanale komunikacyjnym
- TRACE - diagnostyka, analiza kanalu komunikacyjnego
- CONNECT - zadanie przeznaczone dla serwerow posredniczacych pelniacych funkcje tunelowania
- PATCH - aktualizacja czesci danych
Metoda CONNECT nie jest czescia standardu HTTP/1.1, jednak jest powszechnie implementowana na podstawie dokumentu internet-draft wygaslego w 1999 roku[2].
Typowe zapytanie HTTP
[edytuj | edytuj kod]GET / HTTP/1.1(prosba o zwrocenie dokumentu o URI / zgodnie z protokolem HTTP 1.1)Host: example.com(wymagany w HTTP 1.1 naglowekHostsluzacy do rozpoznania hosta, jesli serwer na jednym IP obsluguje kilka VirtualHostow)User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7(nazwa aplikacji klienckiej)Accept: text/xml,application/xml, application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8(akceptowane (badz nieakceptowane dla q=0) przez klienta typy plikow)Accept-Language: pl,en-us;q=0.7,en;q=0.3(preferowany jezyk strony - naglowek przydatny przy Language negotiation)Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7(preferowane kodowanie znakow, patrz strona kodowa)Keep-Alive: 300(czas, jaki klient chce zarezerwowac do nastepnego zapytania w przypadku polaczenia Keep-Alive)Connection: keep-alive(chec nawiazania polaczenia stalego Keep-Alive z serwerem HTTP/1.0)- znak powrotu karetki i nowej linii (CRLF)
HTTP/1.1 dopuszcza wyslanie kilku zadan naraz (pipelining). HTTP/1.0 zaklada jedno zadanie i jedna odpowiedz.
Odpowiedz serwera WWW
[edytuj | edytuj kod]HTTP/1.1 200 OK(kod odpowiedzi HTTP - zaakceptowanie i zwrocenie zawartosci)Date: Thu, 20 Dec 2001 12:04:30 GMT(czas serwera)Server: Apache/2.0.50 (Unix) DAV/2(opis aplikacji serwera)Set-Cookie: PSID=d6dd02e9957fb162d2385ca6f2829a73; path=/(nakazanie klientowi zapisania ciasteczka)Expires: Thu, 19 Nov 1981 08:52:00 GMT(czas wygasniecia zawartosci zwroconego dokumentu. Data w przeszlosci zabrania umieszczenie dokumentu w pamieci podrecznej. Jest to stara metoda zastapiona przez Cache-Control)Cache-Control: no-store, no-cache, must-revalidate(no-store zabrania przechowywania dokumentu na dysku, nawet gdy nie jest to pamiec podreczna. must-revalidate nakazuje bezwzglednie stosowac sie do wytycznych i sprawdzic swiezosc dokumentu za kazdym razem)Keep-Alive: timeout=15, max=100Connection: Keep-Alive(akceptacja polaczenia Keep-Alive dla klientow HTTP/1.0)Transfer-Encoding: chunked(typ kodowania zawartosci stosowanej przez serwer)Content-Type: application/xhtml+xml; charset=utf-8(typ MIME i strona kodowa zwroconego dokumentu)- znak powrotu karetki i nowej linii (CRLF)
- tutaj zawartosc dokumentu
HTTP do obslugi polaczen Keep - Alive wymaga, aby odpowiedz od serwera miala znana dlugosc (przez podanie Content-Length lub uzycie Transfer-Encoding: chunked). W przeciwnym wypadku koniec odpowiedzi sygnalizuje zerwanie polaczenia i Keep-Alive nie moze dzialac.
Naglowek Keep-Alive jest rozszerzeniem HTTP/1.0. W HTTP/1.1 ten naglowek nie jest potrzebny, gdyz polaczenia Keep-Alive sa domyslne (zachowanie zmienia Connection: close).
Zobacz tez
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- | R.R. Fielding R.R. i inni, Hypertext Transfer Protocol -- HTTP/1.1, RFC 2616, IETF, czerwiec 1999, DOI: 10.17487/RFC2616, ISSN 2070-1721, OCLC 943595667 (ang.).
- | Ari Luotonen: Tunneling TCP based protocols through Web proxy servers. 1998. [dostep 2009-07-29]. [zarchiwizowane z tego adresu (2009-08-11)].
Linki zewnetrzne
[edytuj | edytuj kod]- R.R. Fielding R.R. i inni, Hypertext Transfer Protocol -- HTTP/1.1, RFC 2616, IETF, czerwiec 1999, DOI: 10.17487/RFC2616, ISSN 2070-1721, OCLC 943595667 (ang.).
- Podstawy protokolu HTTP (pol.)
- Krotki opis HTTP (ang.)
| Warstwa aplikacji (liczby oznaczaja numery portow) |
|
|---|---|
| Warstwa transportowa | |
| Warstwa Internetu | |
| Warstwa dostepu do sieci |
| Struktura stron WWW | |
|---|---|
| Generowanie dynamicznych stron WWW | |
| Po stronie uzytkownika | |
| Przesylanie danych | |
| Pojecia |