Locked History Actions

Skirtumas „Hypertext Transfer Protocol“

Pakeitimai tarp versijų 8 ir 9
Versija 8 nuo 2009-02-18 17:42:11
Dydis: 3838
Redaktorius: RokasPetrikas
Komentaras:
Versija 9 nuo 2011-10-20 00:13:48
Dydis: 11386
Redaktorius: VygandasŠoblinskas
Komentaras:
Pašalinimai yra pažymėti taip. Pridėjimai yra pažymėti taip.
Eilutė 29: Eilutė 29:
HTTP užklausos iš esmės yra komandų rinkinys, siunčiamas iš naršyklės į tinklapio serverio.

'''Užklausos sudėtis'''

 * Užklausos eilutė – (ang. A request line) ši eilutė yra sudaroma iš tryjų, tarpais atskirtų, elementų. Kuriuose yra nurodomas prašomo dokumento tipas (URL), metodas kuris bus taikomas (METHOD) bei protokolo versija (VERSION).
 * Užklausos antraštės laukai – (ang. The request header fields) šios eilutės nusako papildmą užklausos informaciją. Kiekviena šio tipo eilutė yra sudaroma iš apibrėžiamo antraštės tipo (HEADER), po kurio eina dvitaškis (:), ir antraštės reikšmės (Value).
 * Pagrindinė užklausos dalis – (ang. The body of the request) ši dalis turi būti atskiriama tuščia eilute (Emty line), nuo prieš tai buvusių eilučių. Nusako papildomą užklausos informaciją.
<<BR>>
'''HTTP 1.0 užklausos sintaksė:'''
 . ''METHOD URL VERSION''
 . ''HEADER: Value''
 . ''.''
 . ''.''
 . ''.''
 . ''HEADER: Value''
 . ''Tuščia eilutė''
 . ''BODY OF THE REQUEST''
<<BR>>
'''Žemiau pateikiamas HTTP 1.0 užklausos pavyzdys:'''
 . ''GET http://en.kioskea.net/ HTTP/1.0''
 . ''Accept: text/html''
 . ''If-Modified-Since: Saturday, 15-January-2000 14:37:11 GMT''
 . ''User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)''
<<BR>>
Eilutė 36: Eilutė 60:
 . <<BR>>
'''Užklausos antraščių tipai'''

||Antraštė|| Apibrėžimas||
||Accept ||Turinio tipas, kurį pripažįsta klientas (pvz. text/html)||
||Accept-Charset ||Kliento pripažįstamas simbolių rinkinys||
||Accept-Encoding ||Kliento pripažįstamas duomenų kodavimas||
||Accept-Language ||Kalba kurios tikisi klientas (pagal nutylėjimą – anglų)||
||Autorization ||Kiento indetifikavimas serveriui||
||Content-Encoding ||Pagrindinės užklausos dalies kodavimo tipas||
||Content-Language ||Pagrindinės užklausos dalies kalbos tipas||
||Content-Length ||Pagrindinės užklausos dalies ilgis||
||Content-Type ||Pagrindinės užklausos dalies turinio tipas (pvz. text/html)||
||Date ||Duomenų persiuntimo pradžios data||
||Forwarded ||Nurodomas tarpinis įrenginys tarp kliento ir serverio||
||From ||Suteikia galimybę klientui nurodyti e-paštą||
||Link ||Nuoroda tarp dviejų URL adresų||
||Orig-URL ||URL adresas iš kurio atėjo užklausa||
||Referer ||Nuoroda URL adreso, kuriame užklausa buvo sukurta||
||User-Agent ||Eilutė nurodanti informaciją apie klientą (pvz. naršyklės pavadinimą ir versiją, operacinę sistemą)||

'''HTTP atsakas'''

HTTP atsakas yra komandų rinkinys siunčiamas naršyklei iš tinklapio serverio. Jį sudaro:
 * Būsenos eilutė – (ang. A status line) ši eilutė susideda iš trijų elementų, kurie turi būti atskiriami tarpais:
 . • Naudojamo protokolo versija (VERSION-HTTP);
 . • Būsenos kodas (CODE);
 . • Būsenos reikšmė (EXPLANATION).
 * Atsako antraštės laukai – (ang. The response header fields) šios eilutės nurodo papildomą informaciją, kuri gali būti pateikiama prie atsako. Kiekviena šio tipo eilutė yra sudaroma iš apibrėžiamo atraštės tipo (HEADER), po kurio eina dvitaškis (:), ir antraštės reikšmės (Value).
 * Pagrindinė atsako dalis – (ang. The body of the response) užklausoje prašomas dokumentas.
<<BR>>
'''HTTP 1.0 atsako sintaksė: '''
 . VERSION-HTTP CODE EXPLANATION
 . HEADER: Value
 . .
 . .
 . .
 . HEADER: Value
 . Tuščia eilutė
 . BODY OF THE RESPONSE
<<BR>>
'''HTTP 1.0 atsako pavyzdys:'''
 . HTTP/1.0 200 OK
 . Date: Sat, 15 Jan 2000 14:37:12 GMT
 . Server: Microsoft-IIS/2.0
 . Content-Type: text/HTML
 . Content-Length: 1245
 . Last-Modified: Fri, 14 Jan 2000 08:25:13 GMT

'''Atsako antraščių tipai'''

||Antraštė|| Apibrėžimas||
||Content-Encoding|| Pagrindinės atsako dalies kodavimo tipas||
||Content-Language|| Pagrindinės atsako dalies kalbos tipas||
||Content-Length|| Pagrindinės atsako dalies ilgis||
||Content-Type|| Pagrindinės atsako dalies turinio tipas (pvz. text/html)||
||Date|| Duomenų persiuntimo pradžios data||
||Expires|| Duomenų galiojimas pagal datą||
||Forwarded|| Nurodomas tarpinis įrenginys tarp kliento ir serverio||
||Location|| Nukreipimas į naują URL vietą siejamą su nurodytu dokumentu||
||Server|| Serverio išsiuntusio atsaką parametrai||

'''Atsako būsenos kodai'''

||Būklės kodas|| Būsenos reikšmė|| Apibrėžimas||
||10x|| Information message|| Šie kodai nėra naudojami HTTP 1.0 protokolo versijoje||
||20x|| Success|| Šie kodai nurodo sėkmingą duomenų apsikeitimo procesą||
||200|| OK|| Užklausa buvo sėkmingai įvykdyta||
||201|| CREATED|| Jis kodas gaunamas naudojam POST užklausos metodą. Kodas nurodo sėkmingą užklausos įvykdymą ir savo pagrindinėje atsako dalyje nurodo vietą kurioje turi būti talpinamas naujai sukurtas dokumentas||
||202|| ACCEPTED|| Užklausa buvo priimta, po jos sekančios procedūra buvo neįvykdyta||
||203|| PARTIAL INFORMATION|| Kai šis kodas gaunamas naudojant GET metodą, reiškia jog atsakas nebuvo pilnai įvykdytas||
||204|| NO RESPONSE|| Serveris gavo užklausą, tačiau nėra pageidaujamos informacijos kuri būtų patalpinta į atsaką||
||205|| RESET CONTENT|| Serveris liepia klientui ištrinti formos laukelių turinį||
||30x|| Redirection|| Šie kodai nurodo, kad pageidaujamų dokumentų nebėra nurodytoje vietoje||
||301|| MOVED|| Užklausos duomenys buvo persiųsti į naują adresą||
||302|| FOUND|| Pageidaujami duomenys buvo perkelti į naują URL adresą, kuriame jų dabar nerandama||
||303|| METHOD|| Klientas turi mėginti siųsti užklausą kitu adresu. Taip pat siūloma pakeisti užklausos metodą||
||40x|| Error due to the client|| Šie kodai nurodo jog buvo neteisingai suformuluota užklausa||
||400|| BAD REQUEST|| Neteisingai suformuluota užklausa||
||401|| UNAUTHORIZED|| Užklausos parametrai neatitinka identifikacijos. Klientas turi performuluoti užklausą||
||402|| PAYMENT REQUIRED|| Klientas turi performuluoti užklausą su teisingais apmokėjimo duomenimis||
||403|| FORBIDDEN|| Priėjimas prie duomenų draudžiamas||
||404|| NOT FOUND|| Nurodytu adresu serveris nerado jokių duomenų||
||50x|| Error due to the server|| Šie kodai informuoja, kad serveriui iškilo vidinių klaidų||

'''HTTP protokolo versijos'''
 * '''HTTP 0.9'''
Nebepalaikoma. Palaiko tik GET užklausą. Nepalaiko antraščių (HEADERS). Kadangi nepalaikomas POST metodas, klientas serveriui gali perduoti labai mažai informacijos.
 * '''HTTP 1.0'''
Vis dar labai plačiai naudojama, ypač proxy serverių. Palaiko susijungimą aktyvų, todėl to paties susijungimo metu galima įvykdyti keletą užklausų/atsakymų. Tačiau tai veikia tik tada, kai jungiamasi ne per proxy serverius.
Neišlaiko būsenos informacijos.
 * '''HTTP 1.1'''
Einamoji protokolo versija. Pagal nutylėjimą palaiko aktyvius susijungimus, kurie puikiai veikia ir jungiantis per proxy serverį. Leidžia išsiųsti keletą užklausų vienu metu, taip pagreitinant duomenų persiuntimą vartotojui.
Įmanoma identifikuoti host vardą. Naršyklė siunčia Host: www.xxx.com protokolo antraštėje (HEADER) kiekvienoje užklausoje. Tai pagreitina susisiekimą, jeigu įrenginyje yra paleisti keli virtualūs tinklo serveriai.
Naudojant šį protokolą, turinys gali būti pateikiamas įvairiais formatais: PostScript, PDF, arba kaip paprastas tekstas.

Eilutė 38: Eilutė 158:
Eilutė 43: Eilutė 164:
 . http://os.pit.ktu.lt/~sauga/pratybos/http_metodai.ppt
 . http://en.kioskea.net/contents/internet/http.php3

Hypertext Transfer Protocol

HTTP

Hyperteksto perdavimo protokolas


Apibrėžimas

Tai yra pagrindinis ir populiariausias visame pasaulyje metodas pasiekti informacija pasauliniame tinkle (World Wide Web), kitaip sakant - tai hyperteksto perdavimo protokolas, Interneto pagrindas. Pagrindinis protokolo tikslas yra pateikti standartizuotą būdą HTML puslapių peržiūrai.


Paaiškinimai

HTTP yra užklausos – atsakymo protokolas, kuris inicijuoja ryšį tarp kliento ir serverio. Naršyklė yra HTTP klientas, kuris naudodamas TCP/IP ryšį (dažniausiai HTTP protokolui naudojamas 80 prievadas „Portas“), siunčia užklausą pvz.: „GET / HTTP/1.1 į tam tikrą nutolusį kompiuterį ar serverį. HTTP serveris gavęs užklausą „GET / HTTP/1.1“ atgal atsiunčia atsakymą „200 OK“ kartu su susijusiu pranešimu, kuris dažniausiai būna HTML puslapis.

  • Yra galimi trys HTTP operacijų tipai:

  • 1. Aukščiau aprašytas, tiesioginis ryšys, kuris vyksta betarpiškai tarp kliento ir serverio.

  • 2. Panaudojant papildomus (tarpinius) serverius. Galimi trys atvejai:

  • HTTP.JPG

  • "Proxy" veikia klientų pusėje ir jų užklausas perduoda serveriui. Tai gali būti ir lokalaus tinklo ekranas ("firewall"), kuriam serveris turi "prisistatyti", kad galėtų bendrauti su surinkėju, kuris priima tik tuos atsakymus, kurie praėjo pro filtrą. Kitu atveju, kai valdomos skirtingos kliento ir serverio HTTP versijos, "proxy" atlieka vertėjo paslaugas.

  • "Gateway" (tiltas) klientui prisistato, lyg jis ir būtų tikrasis serveris. Per jį kiti serveriai, neturintys tiesioginio ryšio su klientu, gali perduoti informaciją. Naudojant kaip ekraną ("firewall"), prisistatyti turi klientas (o ne serveris, kaip "proxy" atveju), kuris po to (jei užklausa patenkinama) prileidžiamas prie serverio. Kitu atveju, tai ryšio palaikymas su serveriu, nedirbančio HTTP protokolu, pvz., FTP ar "Gopher".

  • "Tunel" paprasčiausiai tėra jungtis tarp dviejų TCP ryšių. HTTP paketai keliauja nepakitę. Jie naudojami, kai tarp kliento ir serverio yra tarpinis serveris, o kita nesvarbu.

  • 3. Trečiasis HTTP operacijų tipas - „cache“, t.y. ankstesnių užklausų ir atsakymų įsiminimas.

  • HTTP2.JPG

  • Jei užklausa sutampa su kuria nors, saugoma „cache“ serveryje, - iškart siunčiamas atsakymas. „cache“ gali būti tiek kliento, tiek serverio pusėje. Ne visas tranzakcijas galima įsiminti, - ir tai gali valdyti tiek klientas, tiek serveris.

Pagrindinės HTTP užklausos:

HTTP užklausos iš esmės yra komandų rinkinys, siunčiamas iš naršyklės į tinklapio serverio.

Užklausos sudėtis

  • Užklausos eilutė – (ang. A request line) ši eilutė yra sudaroma iš tryjų, tarpais atskirtų, elementų. Kuriuose yra nurodomas prašomo dokumento tipas (URL), metodas kuris bus taikomas (METHOD) bei protokolo versija (VERSION).
  • Užklausos antraštės laukai – (ang. The request header fields) šios eilutės nusako papildmą užklausos informaciją. Kiekviena šio tipo eilutė yra sudaroma iš apibrėžiamo antraštės tipo (HEADER), po kurio eina dvitaškis (:), ir antraštės reikšmės (Value).
  • Pagrindinė užklausos dalis – (ang. The body of the request) ši dalis turi būti atskiriama tuščia eilute (Emty line), nuo prieš tai buvusių eilučių. Nusako papildomą užklausos informaciją.


HTTP 1.0 užklausos sintaksė:

  • METHOD URL VERSION

  • HEADER: Value

  • .

  • .

  • .

  • HEADER: Value

  • Tuščia eilutė

  • BODY OF THE REQUEST


Žemiau pateikiamas HTTP 1.0 užklausos pavyzdys:

  • GET http://en.kioskea.net/ HTTP/1.0

  • Accept: text/html

  • If-Modified-Since: Saturday, 15-January-2000 14:37:11 GMT

  • User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)


  • GET – dažniausiai naudojama užklausa. Ji reikalauja tam tikro resurso (duomenų) duotu URL adresu.

  • POST – panašu į GET, bet siunčiama papildoma informacija, paprastai raktų ir reikšmių poros, nusakančios HTML formos laukų reikšmes.

  • PUT – naudojama failų dėjimui į serverį.

  • DELETE – naudojama trynimui, retai palaikoma.

  • HEAD – panaši į GET, tačiau reikalaujama tik atsakymo antraštė, o pats atsakymo dokumentas nelaukiamas.

  • TRACE – grąžina gautą užklausą, gali būti naudojama tikrinimui, kokių papildomų meta-duomenų prideda tarpiniai serveriai.

  • CONNECT – retai palaikoma, dažniausiai naudojama „tuneliniam ryšiui“ (SSL tunneling)


Užklausos antraščių tipai

Antraštė

Apibrėžimas

Accept

Turinio tipas, kurį pripažįsta klientas (pvz. text/html)

Accept-Charset

Kliento pripažįstamas simbolių rinkinys

Accept-Encoding

Kliento pripažįstamas duomenų kodavimas

Accept-Language

Kalba kurios tikisi klientas (pagal nutylėjimą – anglų)

Autorization

Kiento indetifikavimas serveriui

Content-Encoding

Pagrindinės užklausos dalies kodavimo tipas

Content-Language

Pagrindinės užklausos dalies kalbos tipas

Content-Length

Pagrindinės užklausos dalies ilgis

Content-Type

Pagrindinės užklausos dalies turinio tipas (pvz. text/html)

Date

Duomenų persiuntimo pradžios data

Forwarded

Nurodomas tarpinis įrenginys tarp kliento ir serverio

From

Suteikia galimybę klientui nurodyti e-paštą

Link

Nuoroda tarp dviejų URL adresų

Orig-URL

URL adresas iš kurio atėjo užklausa

Referer

Nuoroda URL adreso, kuriame užklausa buvo sukurta

User-Agent

Eilutė nurodanti informaciją apie klientą (pvz. naršyklės pavadinimą ir versiją, operacinę sistemą)

HTTP atsakas

HTTP atsakas yra komandų rinkinys siunčiamas naršyklei iš tinklapio serverio. Jį sudaro:

  • Būsenos eilutė – (ang. A status line) ši eilutė susideda iš trijų elementų, kurie turi būti atskiriami tarpais:
  • • Naudojamo protokolo versija (VERSION-HTTP);
  • • Būsenos kodas (CODE);
  • • Būsenos reikšmė (EXPLANATION).
  • Atsako antraštės laukai – (ang. The response header fields) šios eilutės nurodo papildomą informaciją, kuri gali būti pateikiama prie atsako. Kiekviena šio tipo eilutė yra sudaroma iš apibrėžiamo atraštės tipo (HEADER), po kurio eina dvitaškis (:), ir antraštės reikšmės (Value).
  • Pagrindinė atsako dalis – (ang. The body of the response) užklausoje prašomas dokumentas.


HTTP 1.0 atsako sintaksė:

  • VERSION-HTTP CODE EXPLANATION
  • HEADER: Value
  • .
  • .
  • .
  • HEADER: Value
  • Tuščia eilutė
  • BODY OF THE RESPONSE


HTTP 1.0 atsako pavyzdys:

  • HTTP/1.0 200 OK
  • Date: Sat, 15 Jan 2000 14:37:12 GMT
  • Server: Microsoft-IIS/2.0
  • Content-Type: text/HTML
  • Content-Length: 1245
  • Last-Modified: Fri, 14 Jan 2000 08:25:13 GMT

Atsako antraščių tipai

Antraštė

Apibrėžimas

Content-Encoding

Pagrindinės atsako dalies kodavimo tipas

Content-Language

Pagrindinės atsako dalies kalbos tipas

Content-Length

Pagrindinės atsako dalies ilgis

Content-Type

Pagrindinės atsako dalies turinio tipas (pvz. text/html)

Date

Duomenų persiuntimo pradžios data

Expires

Duomenų galiojimas pagal datą

Forwarded

Nurodomas tarpinis įrenginys tarp kliento ir serverio

Location

Nukreipimas į naują URL vietą siejamą su nurodytu dokumentu

Server

Serverio išsiuntusio atsaką parametrai

Atsako būsenos kodai

Būklės kodas

Būsenos reikšmė

Apibrėžimas

10x

Information message

Šie kodai nėra naudojami HTTP 1.0 protokolo versijoje

20x

Success

Šie kodai nurodo sėkmingą duomenų apsikeitimo procesą

200

OK

Užklausa buvo sėkmingai įvykdyta

201

CREATED

Jis kodas gaunamas naudojam POST užklausos metodą. Kodas nurodo sėkmingą užklausos įvykdymą ir savo pagrindinėje atsako dalyje nurodo vietą kurioje turi būti talpinamas naujai sukurtas dokumentas

202

ACCEPTED

Užklausa buvo priimta, po jos sekančios procedūra buvo neįvykdyta

203

PARTIAL INFORMATION

Kai šis kodas gaunamas naudojant GET metodą, reiškia jog atsakas nebuvo pilnai įvykdytas

204

NO RESPONSE

Serveris gavo užklausą, tačiau nėra pageidaujamos informacijos kuri būtų patalpinta į atsaką

205

RESET CONTENT

Serveris liepia klientui ištrinti formos laukelių turinį

30x

Redirection

Šie kodai nurodo, kad pageidaujamų dokumentų nebėra nurodytoje vietoje

301

MOVED

Užklausos duomenys buvo persiųsti į naują adresą

302

FOUND

Pageidaujami duomenys buvo perkelti į naują URL adresą, kuriame jų dabar nerandama

303

METHOD

Klientas turi mėginti siųsti užklausą kitu adresu. Taip pat siūloma pakeisti užklausos metodą

40x

Error due to the client

Šie kodai nurodo jog buvo neteisingai suformuluota užklausa

400

BAD REQUEST

Neteisingai suformuluota užklausa

401

UNAUTHORIZED

Užklausos parametrai neatitinka identifikacijos. Klientas turi performuluoti užklausą

402

PAYMENT REQUIRED

Klientas turi performuluoti užklausą su teisingais apmokėjimo duomenimis

403

FORBIDDEN

Priėjimas prie duomenų draudžiamas

404

NOT FOUND

Nurodytu adresu serveris nerado jokių duomenų

50x

Error due to the server

Šie kodai informuoja, kad serveriui iškilo vidinių klaidų

HTTP protokolo versijos

  • HTTP 0.9

Nebepalaikoma. Palaiko tik GET užklausą. Nepalaiko antraščių (HEADERS). Kadangi nepalaikomas POST metodas, klientas serveriui gali perduoti labai mažai informacijos.

  • HTTP 1.0

Vis dar labai plačiai naudojama, ypač proxy serverių. Palaiko susijungimą aktyvų, todėl to paties susijungimo metu galima įvykdyti keletą užklausų/atsakymų. Tačiau tai veikia tik tada, kai jungiamasi ne per proxy serverius. Neišlaiko būsenos informacijos.

  • HTTP 1.1

Einamoji protokolo versija. Pagal nutylėjimą palaiko aktyvius susijungimus, kurie puikiai veikia ir jungiantis per proxy serverį. Leidžia išsiųsti keletą užklausų vienu metu, taip pagreitinant duomenų persiuntimą vartotojui. Įmanoma identifikuoti host vardą. Naršyklė siunčia Host: www.xxx.com protokolo antraštėje (HEADER) kiekvienoje užklausoje. Tai pagreitina susisiekimą, jeigu įrenginyje yra paleisti keli virtualūs tinklo serveriai. Naudojant šį protokolą, turinys gali būti pateikiamas įvairiais formatais: PostScript, PDF, arba kaip paprastas tekstas.

HTTPS yra saugi HTTP versija.


Naudota literatūra