260 likes | 365 Views
HTTP-protokolla. HTTP (HyperText Transfer Protocol) on web-asiakkaan ja –palvelimen keskinäiseen tiedonsiirtoon käyttämä yhteyskäytäntö. Nimestään huolimatta HTTP-protokolla ei rajoitu pelkästään HTML-dokumenttien siirtämiseen, vaan sillä voi siirtää monenlaista dataa.
E N D
HTTP-protokolla • HTTP (HyperText Transfer Protocol) on web-asiakkaan ja –palvelimen keskinäiseen tiedonsiirtoon käyttämä yhteyskäytäntö. • Nimestään huolimatta HTTP-protokolla ei rajoitu pelkästään HTML-dokumenttien siirtämiseen, vaan sillä voi siirtää monenlaista dataa. • Palvelin kertoo yleensä siirrettävän datan tyypin ContentType-otsakkeessa. • Tarkastellaan seuraavaksi HTTP-siirtotapahtumaa, kuva 1. tMyn
1 2 Kuva 1. HTTP-siirtotapahtuma. tMyn
HTTP-siirtotapahtuma koostuu kahdesta HTTP-viestistä (HTTP message), jotka ovat: 1. Asiakaspyyntö (HTTP request), jonka sisältönä on • Pyyntörivi (Request Line) • HTTP-otsakkeet • data 2. Palvelimen vastaus (HTTP response), jonka sisältönä on • Tilarivi (Status Line) • HTTP-otsakkeet • data tMyn
HTTP-asiakaspyyntö etenee seuraavassa muodossa: 1. Asiakas ottaa yhteyden halutun palvelimen tiettyyn porttiin (yleensä 80). 2. Asiakas lähettää HTTP-komennon (pyyntörivi), jonka kolmesta välilyönnillä erotetusta kentästä löytyy • Käytettävä metodi • Pyydettävä dokumentti • HTTP:n versio. Esim. GET / manual / HTTP / 1.0 tMyn
3. Asiakas lähettää mahdolliset HTTP-otsakkeet riveittäin. Kukin rivi koostuu otsakkeen nimestä, kaksoispisteestä, välilyönnistä ja otsakkeen arvosta sekä rivinvaihtomerkistä (CRLF). Web-selain voi kertoa näin esimerkiksi nimensä, hyväksymänsä dokumenttityypit, toivomansa kielen jne. Esim. User-agent: Mozilla… Accept: image/gif, … Accept-Language: fi, en-us; … tMyn
4. Asiakas lähettää rivinvaihtomerkin (CRLF eli tyhjän rivin). 5. Asiakas voi lähettää muuta dataa. Näin tapahtuu esim. silloin, kun web-selain lähettää HTML-lomakkeen sisältämän datan POST-metodilla. 6. Pyyntö päättyy kahteen peräkkäiseen rivinvaihtomerkkiin. • Seuraavaksi on esitetty skripti asiakaspyynnön lähettämän datan näyttämistä varten: tMyn
HTML-lomake: tMyn
Description • array getallheaders ( void ) • Fetches all HTTP headers from the current request. • This function is an alias for apache_request_headers(). Please read the • apache_request_headers() documentation for more information on how this • function works. • This function is only supported when PHP is installed as an Apache module. • Return Values • An associative array of all the HTTP headers in the current request, or • FALSE on failure. tMyn
Tällaista informaatiota selain lähettää web-palvelimelle: tMyn
Kun asiakas on lähettänyt HTTP-pyynnön, palvelin vastaa siihen. Palvelimen vastaus etenee seuraavassa muodossa: 1. Palvelin vastaa tilarivillä, jonka kolmesta välilyönneillä erotetusta kentästä löytyy • HTTP:n versio • Tilakoodi • Tilakoodin tekstimuotoinen selitys. • Esim. • HTTP / 1.0 200 OK tMyn
2. Palvelin lähettää mahdolliset HTTP-otsakkeet riveittäin. Kukin rivi koostuu otsakkeen nimestä, kaksoispisteestä, välilyönnistä ja otsakkeen arvosta sekä rivinvaihtomerkistä (CRLF). Tyypillisesti voidaan kertoa esim. vastauksen luontiaika, tietoja palvelimesta ja palautettavan dokumentin sisältötyyppi. Esim. Date: Mon, … Apache… Content-Type: text/html; charset… tMyn
3. Palvelin lähettää rivinvaihtomerkin (CRLF). 4. Pyynnön onnistuessa vastaukseksi lähetetään mahdollisesti haluttu data. • Käydään seuraavaksi vanhassa kotikunnassa Askolassa katsomassa mikä palvelin siellä on: tMyn
jne… tMyn
HTTP on tilaton protokolla. Peräkkäisten siirtotapahtumien välillä ei ole mahdollista pitää tilatietoa protokollan avulla (vrt. istunnonhallinta). Näin ollen • Tapahtumien seuranta ei kuormita HTTP:tä, mikä tekee siitä jossakin mielessä nopean ja keveän protokollan • Jokainen HTTP-siirtotapahtuma on aloitettava aivan alusta, minkä vuoksi web-sovellusten ohjelmointi on työlästä. tMyn
Web-selaimen tilalla tarkoitetaan kaikkea seuraavalla pyynnöllä välitettävissä olevaa dataa, joka on tallennettuna mm. lomakkeen kenttiin, hyperlinkkien kyselyosiin ja evästeisiin. • Koska siirtotapahtumien välillä ei ole mitään yhteyttä, sovelluksen tilatiedot täytyy ylläpitää tilanteesta riippuen palvelinskriptin luomissa tai asettamissa • HTML-lomakkeissa • Hyperlinkeissä URL:in kyselyosassa • Evästeissä (cookies). tMyn
Jos tarkastellaan palvelinskriptin kommunikointia käyttöliittymänsä (web-selain) kanssa erikseen molempiin suuntiin, voidaan sanoa, että palvelinskriptiin liittyy neljä keskeisesti erilaista datan välitystapaa. • Syöttökanavia on kaksi, eli palvelinskripti voi saada syötteensä web-selaimelta jommallakummalla tavalla: • HTML-lomakkeelta joko POST- tai GET-metodilla • Hyperlinkin välityksellä siihen liitetystä URL:in kyselyosasta GET-metodilla. tMyn
Tulostuskanavia on myös kaksi. Palvelinskripti lähettää tulosteensa web-selaimelle jommallakummalla tavalla: • HTTP-otsakkeiden välityksellä (mm. kertoo dokumentin mediatyypin, asettaa evästeitä, uudelleenohjaa pyynnön jne.) • Palvelimen vastauksen (HTTP Response) data-osassa. tMyn