Inafasiriwa moja kwa moja kutoka kwa Wikipedia ya Kiingereza na Tafsiri ya Google

Itifaki ya Uhamisho ya Hypertext

Itifaki ya Uhamisho wa Hypertext ( HTTP ) ni itifaki ya maombi ya mifumo ya habari iliyosambazwa, ya ushirikiano, na ya hypermedia . [1] HTTP ni msingi wa mawasiliano ya data kwa Mtandao Wote wa Dunia .

Hypertext ni maandishi yaliyoundwa ambayo hutumia viungo vya mantiki ( viungo ) kati ya nodes zilizo na maandishi. HTTP ni itifaki ya kubadilishana au kuhamisha hypertext.

Maendeleo ya HTTP yalianzishwa na Tim Berners-Lee katika CERN mwaka 1989. HTTP ya maendeleo ya viwango iliratibiwa na Shirika la Kazi la Uhandisi wa Internet (IETF) na Mtandao wa Wilaya ya Ulimwengu Wote (W3C), na hatimaye katika kuchapishwa kwa mfululizo wa Maombi ya Maoni (RFCs). Ufafanuzi wa kwanza wa HTTP / 1.1, toleo la HTTP kwa matumizi ya kawaida, ilitokea RFC 2068 mwaka 1997, ingawa hii ilikuwa imefungwa na RFC 2616 mwaka 1999 na tena na familia ya RFC 7230 ya RFC mwaka 2014.

Toleo la baadaye, HTTP / 2 mrithi, lilikuwa la kawaida mwaka 2015, na sasa linasaidiwa na seva kubwa za wavuti na wavuti juu ya TLS kutumia ugani wa ALPN [2] ambapo TLS 1.2 au mpya inahitajika. [3]

Yaliyomo

Maelezo ya kiufundi

URL inayoanza na mpango wa HTTP na lebo ya jina la jina la WWW .

Kazi ya HTTP kama itifaki ya majibu ya ombi katika mtindo wa kompyuta ya server. Msanidi wa kivinjari , kwa mfano, anaweza kuwa mteja na programu inayoendesha kwenye tovuti ya mwenyeji wa kompyuta inaweza kuwa seva . Mteja anawasilisha ujumbe wa ombi wa HTTP kwenye seva. Seva, ambayo hutoa rasilimali kama faili za HTML na maudhui mengine, au hufanya kazi nyingine kwa niaba ya mteja, anarudi ujumbe wa majibu kwa mteja. Mitikio ina habari ya kukamilisha hali kuhusu ombi na inaweza pia kuwa na maudhui ya ombi katika mwili wa ujumbe wake.

Kivinjari cha kivinjari ni mfano wa wakala wa mtumiaji (UA). Aina nyingine ya wakala wa mtumiaji ni pamoja na programu ya indexing inayotumiwa na watoa huduma za utafutaji ( wavuti wavuti ), vivinjari vya sauti , programu ya simu ya mkononi , na programu nyingine inayofikia, hutumia, au huonyesha maudhui ya wavuti.

HTTP imeundwa kuruhusu vipengele vya kati vya mtandao ili kuboresha au kuwezesha mawasiliano kati ya wateja na seva. Tovuti ya trafiki mara nyingi hufaidika na seva za mtandao za cache ambazo hutoa maudhui kwa niaba ya seva za mto ili kuboresha wakati wa majibu. Vifunguo vya wavuti za wavuti vilivyofikia awali rasilimali za wavuti na hutumia tena wakati iwezekanavyo ili kupunguza trafiki ya mtandao. Hifadhi ya wakala wa HTTP kwenye mipaka ya mtandao wa kibinafsi inaweza kuwezesha mawasiliano kwa wateja bila anwani ya kimataifa inayoweza kutumika, kwa kupeleka ujumbe na seva za nje.

HTTP ni itifaki ya safu ya maombi iliyoundwa ndani ya mfumo wa Suite ya itifaki ya mtandao . Ufafanuzi wake unaelezea itifaki ya safu ya kusafirisha ya msingi na inayoaminika, [4] na Itifaki ya Udhibiti wa Usambazaji (TCP) hutumiwa kawaida. Hata hivyo HTTP inaweza kubadilishwa kutumia itifaki zisizoaminika kama vile Protokta ya Datagram ya Mtumiaji (UDP), kwa mfano katika HTTPU na Protocole ya Huduma ya Rahisi ya Kupata Utambuzi (SSDP).

Rasilimali za HTTP zinatambuliwa na ziko kwenye mtandao na Wafanyabiashara wa Rasilimali Zinazofanana (URLs), kwa kutumia Kitambulisho cha Rasilimali za Uniform (URI) http na https . URIs na viungo katika nyaraka za HTML hufanya nyaraka za hypertext zilizounganishwa.

HTTP / 1.1 ni marekebisho ya HTTP ya awali (HTTP / 1.0). Katika HTTP / 1.0 uunganisho tofauti na seva sawa hufanywa kwa kila ombi la rasilimali. HTTP / 1.1 inaweza kutumia tena uhusiano mara nyingi ili kupakua picha, maandiko , mitindo , nk baada ya ukurasa huo kutolewa. Mawasiliano ya HTTP / 1.1 kwa hiyo hupata uchelevu chini kama uanzishwaji wa uhusiano wa TCP unaonyesha ushindi mkubwa.

Historia

Tim Berners-Lee

Neno la hypertext lilianzishwa na Ted Nelson mwaka wa 1965 katika Mradi wa Xanadu , ambao kwa upande wake uliongozwa na maoni ya Vannevar Bush ya miaka ya 1930 ya mfumo wa upatikanaji wa habari wa microfilm na usimamizi wa mfumo wa " memex " ulioelezwa katika somo lake la 1945 " Kama Tunaweza Kufikiria ". Tim Berners-Lee na timu yake ya CERN huhesabiwa kwa kutengeneza HTTP ya asili pamoja na HTML na teknolojia inayohusiana na seva ya wavuti na kivinjari kivinjari-msingi. Berners-Lee kwanza alipendekeza mradi wa "WorldWideWeb" mwaka 1989-sasa unaojulikana kama Mtandao Wote wa Dunia . Toleo la kwanza la itifaki lili na njia moja tu, yaani GET, ambayo inaweza kuomba ukurasa kutoka kwa seva. [5] Jibu kutoka kwa seva ilikuwa daima ukurasa wa HTML. [6]

Toleo la kwanza la HTTP lilikuwa HTTP V0.9 (1991). Dave Raggett aliongoza kundi la Kazi la HTTP (HTTP WG) mwaka 1995 na alitaka kupanua itifaki na shughuli zilizopanuliwa, mazungumzo yaliyopanuliwa, maelezo ya utajiri zaidi, amefungwa na itifaki ya usalama ambayo iliwa na ufanisi zaidi kwa kuongeza njia za ziada na mashamba ya kichwa . [7] [8] RFC 1945 ilianzisha rasmi na kutambuliwa HTTP V1.0 mwaka 1996.

HTTP WG ilipanga kuchapisha viwango vipya mnamo Desemba 1995 [9] na msaada wa HTTP / 1.1 kabla ya kiwango cha msingi kulingana na kisha zinazoendelea RFC 2068 (inayoitwa HTTP-NG) ilipitishwa haraka na watengenezaji wa browser kuu mapema 1996. Machi 1996, kabla ya kawaida HTTP / 1.1 iliungwa mkono kwenye uwanja , [10] Netscape 2.0 , [10] Netscape Navigator Gold 2.01, [10] Musa 2.7 , [ kinachohitajika ] Lynx 2.5 , [ inahitajika ] na katika Internet Explorer 2.0 . [ citation inahitajika ] Mwisho-mtumiaji kupitishwa kwa browsers mpya ilikuwa haraka. Mnamo Machi 1996, kampuni moja ya mwenyeji wa wavuti iliripoti kuwa zaidi ya 40% ya browsers kutumika kwenye mtandao walikuwa HTTP 1.1 kuzingatia. [ inahitajika ] Kampuni hiyo hiyo ya mwenyeji wa wavuti iliripoti kuwa kufikia Juni 1996, 65% ya browsers zote zinazopata huduma zao zilikuwa zinafaa HTTP / 1.1. [11] Kiwango cha HTTP / 1.1 kama ilivyoelezwa katika RFC 2068 kilifunguliwa rasmi Januari 1997. Uboreshaji na sasisho kwa kiwango cha HTTP / 1.1 zilitolewa chini ya RFC 2616 mwezi Juni 1999.

Mnamo mwaka 2007, HTTPbis Group Working Group iliundwa, kwa sehemu, ili kurekebisha na kufafanua specifikationer HTTP / 1.1. Mnamo Juni 2014, WG iliyotolewa vipengele sita vya vipimo vilivyosababisha RFC 2616 :

HTTP / 2 ilichapishwa kama RFC 7540 mwezi Mei 2015.

Mwaka Toleo la HTTP
1991 0.9
1996 1.0
1997 1.1
2015 2.0

Sura ya HTTP

Somo la HTTP ni mlolongo wa shughuli za ombi-majibu ya mtandao. Mteja wa HTTP huanzisha ombi kwa kuanzisha uunganisho wa Udhibiti wa Uhamisho wa Transmission (TCP) kwenye bandari fulani kwenye seva (kawaida bandari 80, mara kwa mara bandari 8080; ona Orodha ya TCP na UDP bandari namba ). Seva ya HTTP kusikiliza kwenye bandari hiyo inasubiri ujumbe wa ombi la mteja. Baada ya kupokea ombi, seva inarudi mstari wa hali, kama vile "HTTP / 1.1 200 OK", na ujumbe wake mwenyewe. Mwili wa ujumbe huu ni rasilimali iliyoombwa, ingawa ujumbe wa makosa au taarifa nyingine inaweza pia kurejeshwa. [1]

Uthibitishaji wa HTTP

HTTP hutoa mipango ya kuthibitisha nyingi kama uthibitisho wa upatikanaji wa msingi na uhakiki uthibitisho wa upatikanaji wa ufanisi unaofanya kupitia utaratibu wa kukabiliana na changamoto ambapo seva hufafanua na husababisha changamoto kabla ya kutumikia maudhui yaliyotakiwa.

HTTP hutoa mfumo wa jumla wa udhibiti wa upatikanaji na uthibitishaji, kupitia seti ya kina ya mipango ya uthibitishaji wa changamoto, ambayo inaweza kutumika na seva ili changamoto ombi la mteja na kwa mteja kutoa maelezo ya uthibitisho. [12]

Mandhari za uthibitishaji

Uthibitisho wa HTTP Uthibitishaji pia hutoa ujenzi wa kiholela, wa utekelezaji maalum kwa ajili ya kugawa zaidi rasilimali za kawaida kwa mizizi ya URI iliyotolewa. Kamba ya thamani ya eneo, ikiwa iko sasa, imeunganishwa na mizizi ya URI ya kondomu ili kuunda sehemu ya nafasi ya ulinzi wa changamoto. Hii inaruhusu seva kufafanua mipangilio tofauti ya uthibitisho chini ya mizizi moja ya URI [12]

Njia za kuomba

Ombi la HTTP 1.1 lililofanywa kwa kutumia telnet. Ujumbe wa ombi , sehemu ya kichwa cha majibu , na mwili wa majibu hutajwa.

HTTP inafafanua njia (wakati mwingine hujulikana kama vitenzi ) ili kuonyesha hatua inayohitajika kufanywa kwenye rasilimali iliyojulikana. Nini rasilimali hii inawakilisha, kama data zilizopo zilizopo au data inayozalishwa kwa nguvu, inategemea utekelezaji wa seva. Mara nyingi, rasilimali inafanana na faili au pato la mwenye kutekeleza anayeishi kwenye seva. Ufafanuzi wa HTTP / 1.0 [13] ulielezea njia za GET, POST na HEAD na vipimo vya HTTP / 1.1 [14] aliongeza njia mpya 5: OPTIONS, PUT, DELETE, TRACE na CONNECT. Kwa kuwa maalum katika nyaraka hizi semantics zao zinajulikana na zinaweza kutegemea. Mteja yeyote anaweza kutumia njia yoyote na seva inaweza kusanidi ili kuunga mkono njia yoyote ya macho. Ikiwa njia haijulikani kwa kati itachukuliwa kama mbinu salama na isiyo na idempotent . Hakuna kikomo kwa idadi ya njia ambazo zinaweza kufafanuliwa na hii inaruhusu njia za baadaye zitaelezwa bila kuvunja miundombinu iliyopo. Kwa mfano, WebDAV ilifafanua mbinu mpya 7 na RFC 5789 ilielezea njia ya PATCH .

Pata
Njia ya GET inaomba uwakilishi wa rasilimali maalum. Maombi ya kutumia GET inapaswa tu kupata data na haipaswi kuwa na athari nyingine. (Hii pia ni ya kweli kwa njia nyingine za HTTP.) [1] W3C imechapisha kanuni za uongozi juu ya tofauti hii, ikisema, "Mpangilio wa maombi ya wavuti unapaswa kuwafahamika na kanuni zilizo juu, lakini pia kwa mapungufu husika." [15] Angalia njia salama chini.
JUA
Njia ya HEAD inahitaji jibu linalofanana na ile ya ombi la GET, lakini bila mwili wa majibu. Hii ni muhimu kwa kurejesha habari ya meta iliyoandikwa katika vichwa vya majibu, bila ya kusafirisha maudhui yote.
POST
Njia ya POST inaomba kwamba seva kukubali kiungo kilichofungwa katika ombi kama mjadala mpya wa rasilimali ya wavuti inayojulikana na URI. POSTed data inaweza kuwa, kwa mfano, annotation kwa rasilimali zilizopo; ujumbe kwa bodi ya habari, kikundi cha habari, orodha ya barua pepe, au thread ya maoni; kizuizi cha data ambacho ni matokeo ya kuwasilisha fomu ya mtandao kwenye mchakato wa utunzaji wa data; au kipengee cha kuongeza kwenye databana. [16]
PUT
Njia ya PUT inaomba kwamba chombo kilichofungwa kinahifadhiwa chini ya URI iliyotolewa. Ikiwa URI inahusu rasilimali iliyopo tayari, imebadilishwa; ikiwa URI haielezei rasilimali zilizopo, basi seva inaweza kuunda rasilimali kwa URI hiyo. [17]
Ondoa
Njia ya DELETE inachukua rasilimali maalum.
TRACE
Njia ya TRACE inasisitiza ombi la kupokea ili mteja anaweza kuona nini (au chochote) mabadiliko au nyongeza yamefanywa na seva za kati.
OPTIONS
Njia ya OPTIONS inarudi mbinu za HTTP ambazo seva inasaidia kwa URL maalum. Hii inaweza kutumika kuchunguza utendaji wa seva ya wavuti kwa kuomba '*' badala ya rasilimali maalum.
Unganisha
[18] Njia ya CONNECT inabadilisha uhusiano wa ombi kwenye handaki ya TCP / IP ya uwazi, kwa kawaida ili kuwezesha mawasiliano ya SSL ( HTTPS ) kwa njia ya wakala wa HTTP usio sahihi. [19] [20] Angalia kuunganisha HTTP CONNECT .
PATCH
Njia ya PATCH inatumia marekebisho ya sehemu kwa rasilimali. [21]

Seva zote za HTTP zinazohitajika kwa ujumla zinahitajika kutekeleza angalau njia za GET na HEAD, [22] na, wakati wowote iwezekanavyo, pia njia ya OPTIONS. [ citation inahitajika ]

Njia salama

Njia zingine (kwa mfano, HEAD, GET, OPTIONS na TRACE), kwa mkataba, hufafanuliwa kuwa salama , ambayo ina maana kwamba nio tu kwa ajili ya kupata taarifa na haipaswi kubadilisha hali ya seva. Kwa maneno mengine, haipaswi kuwa na madhara , zaidi ya madhara yasiyo na madhara kama vile magogo , caching , kutumikia matangazo ya bendera au kuongeza kasi ya mtandao . Kufanya maombi ya GET bila ya kujali hali ya hali ya maombi inapaswa kuhesabiwa kuwa salama. Hata hivyo, hii sio mamlaka kwa kiwango, na ni wazi kukubalika kwamba haiwezi kuhakikishiwa.

Kwa upande mwingine, mbinu kama vile POST, PUT, DELETE na PATCH zinalenga kwa vitendo ambavyo vinaweza kusababisha madhara ama kwenye seva, au madhara ya nje kama vile shughuli za kifedha au uhamisho wa barua pepe . Hivyo njia hizi hazitumiwi kwa kufanana na robots za wavuti au wavuti wavuti ; baadhi ambayo haifai kufanana huwa na kufanya maombi bila kujali mazingira au matokeo.

Licha ya usalama ulioamriwa wa maombi ya GET , kwa kawaida utunzaji wao na seva sio kimsingi mdogo kwa namna yoyote. Kwa hiyo, programu isiyojali au kwa makusudi inaweza kusababisha mabadiliko yasiyo ya maana kwenye seva. Hii ni tamaa, kwa sababu inaweza kusababisha matatizo kwa caching mtandao , injini za utafutaji na mawakala wengine automatiska, ambayo inaweza kufanya mabadiliko zisizotarajiwa kwenye seva. Kwa mfano, tovuti inaweza kuruhusu kufutwa kwa rasilimali kupitia URL kama vile http://example.com/article/1234/delete , ambayo, ikiwa imetajwa, hata kutumia GET , ingeweza kufuta makala. [23]

Mfano mmoja wa hili unatokea katika mazoezi ulikuwa wakati wa beta ya Google Web Accelerator ya muda mfupi, ambayo ilitengeneza URL za kiholela kwenye ukurasa ambazo mtumiaji alikuwa akiangalia, na kusababisha kumbukumbu zimebadilishwa au kufutwa kwa urahisi. Beta imesimamishwa wiki moja baada ya kutolewa kwake kwa kwanza, kufuatia upinzani ulioenea. [24] [23]

Njia zisizofaa na programu za wavuti

Mbinu PUT na DELETE zinatafanuliwa kuwa zisizo na uwezo , maana kwamba maombi mengi yanafanana yanapaswa kuwa na athari sawa na ombi moja ( kumbuka kwamba uovu unahusu hali ya mfumo baada ya ombi kukamilika, hivyo wakati hatua ambayo server inachukua (mfano kufuta rekodi) au msimbo wa majibu unarudi inaweza kuwa tofauti kwa maombi yafuatayo, hali ya mfumo itakuwa sawa kila wakati [ citation inahitajika ] ). Njia Pata, HEAD, OPTIONS na TRACE, ikiwa imeagizwa kuwa salama, lazima pia kuwa na maana, kama HTTP ni protoksi isiyo na sheria . [1]

Kwa upande mwingine, njia ya POST sio lazima, na hivyo kutuma ombi la POST la mara nyingi linaweza kuathiri zaidi hali au kusababisha madhara zaidi (kama vile shughuli za kifedha ). Katika hali nyingine hii inaweza kuwa yenye kuhitajika, lakini katika hali nyingine hii inaweza kuwa kutokana na ajali, kama vile mtumiaji anayegundua kuwa hatua yao itasababisha kutuma ombi jingine, au hawakupata maoni ya kutosha ambayo ombi lao la kwanza lilikuwa imefanikiwa. Wakati vivinjari vya wavuti vinaweza kuonyesha masanduku ya mazungumzo ya tahadhari ili kuwaonya watumiaji katika baadhi ya matukio ambapo reloading ukurasa inaweza tena kuwasilisha ombi POST, kwa ujumla hadi maombi ya mtandao kushughulikia kesi ambapo ombi POST haipaswi kuwasilishwa mara moja.

Kumbuka kuwa kama njia ni isiyo na nguvu si kutekelezwa na itifaki au server ya mtandao. Inawezekana kabisa kuandika maombi ya wavuti ambayo (kwa mfano) kuingiza orodha au hatua nyingine isiyo ya idempotent inasababishwa na GET au ombi kingine. Kupuuza mapendekezo haya, hata hivyo, inaweza kusababisha matokeo yasiyofaa, ikiwa wakala wa mtumiaji anadhani kuwa kurudia ombi hilo hilo ni salama wakati sivyo.

Usalama

Njia ya TRACE inaweza kutumika kama sehemu ya mashambulizi inayojulikana kama kufuatilia tovuti ; kwa sababu hiyo, ushauri wa kawaida wa usalama ni kwa kuwa umewezeshwa katika usanidi wa seva. [25] Microsoft IIS inasaidia mfumo wa "TRACK" wa wamiliki, ambao hufanyika sawa, na ambayo pia inashauriwa kuwa walemavu. [25]

Jedwali la muhtasari wa

Njia ya HTTP RFC Omba Ina Mwili Jibu Ina Mwili Salama Wasiofaa Inaweza kuharibika
Pata RFC 7231 Hiari Ndiyo Ndiyo Ndiyo Ndiyo
JUA RFC 7231 Hapana Hapana Ndiyo Ndiyo Ndiyo
POST RFC 7231 Ndiyo Ndiyo Hapana Hapana Ndiyo
PUT RFC 7231 Ndiyo Ndiyo Hapana Ndiyo Hapana
Ondoa RFC 7231 Hapana Ndiyo Hapana Ndiyo Hapana
Unganisha RFC 7231 Ndiyo Ndiyo Hapana Hapana Hapana
OPTIONS RFC 7231 Hiari Ndiyo Ndiyo Ndiyo Hapana
TRACE RFC 7231 Hapana Ndiyo Ndiyo Ndiyo Hapana
PATCH RFC 5789 Ndiyo Ndiyo Hapana Hapana Hapana

Nambari za hali

Katika HTTP / 1.0 na tangu, mstari wa kwanza wa jibu la HTTP inaitwa mstari wa hali na inajumuisha msimbo wa hali ya nambari (kama vile " 404 ") na maneno ya sababu ya maandishi (kama "Haikupatikana"). Njia ya wakala wa mtumishi anayeshughulikia majibu hasa inategemea kificho na pili kwenye mashamba mengine ya kichwa cha majibu . Nambari za hali ya desturi zinaweza kutumika tangu, ikiwa wakala wa mtumiaji hukutana na msimbo haukutambui, inaweza kutumia tarakimu ya kwanza ya kanuni ili kuamua darasa la jumla la majibu. [26]

Maneno ya sababu ya kawaida ni mapendekezo tu na yanaweza kubadilishwa na "vigezo vya mitaa" kwenye ujuzi wa msanidi wa wavuti . Ikiwa msimbo wa hali unahitajika tatizo, wakala wa mtumiaji anaweza kuonyesha hoja kwa mtumiaji kutoa taarifa zaidi kuhusu hali ya tatizo. Kiwango pia inaruhusu wakala wa mtumiaji kujaribu kujaribu kutafsiri maneno , ingawa hii inaweza kuwa sio busara tangu kiwango kinafafanua kuwa kanuni za hali zinasomeka kwa mashine na sababu za sababu zinasomeka kwa binadamu. Nambari ya hali ya HTTP imegawanywa kwa makundi mawili kwa ufafanuzi bora wa ombi na majibu kati ya mteja na seva kama aitwaye: Informational 1XX, 2XX mafanikio, Redirect 3XX, Hitilafu ya Mteja 4XX na Error Server 5XX.

Kuunganishwa kwa kuendelea

Katika HTTP / 0.9 na 1.0, uunganisho umefungwa baada ya jozi moja / jibu la majibu. Katika HTTP / 1.1 utaratibu wa kuendelea-hai ulianzishwa, ambapo uhusiano unaweza kutumika tena kwa ombi zaidi ya moja. Maunganisho hayo yanayoendelea yanapunguza ufikiaji wa ombi kwa sababu, kwa sababu mteja hawana haja ya kujadili tena uhusiano wa TCP 3-Way-Handshake baada ya ombi la kwanza limepelekwa. Mwingine athari nzuri ni kwamba kwa ujumla uunganisho unakuwa kwa kasi kwa muda kutokana na kuanza kwa taratibu za TCP.

Toleo la 1.1 la itifaki pia lilifanya maboresho ya upanaji wa bandwidth kwa HTTP / 1.0. Kwa mfano, HTTP / 1.1 ilianzisha coded uhamisho wa encoding ili kuruhusu maudhui juu ya uhusiano unaoendelea kuwa mkondere badala ya kunuliwa. HTTP pipelining zaidi hupunguza muda wa kupungua, kuruhusu wateja kutuma maombi mengi kabla ya kusubiri kila majibu. Mbali nyingine kwa itifaki ilikuwa tote kutumikia , ambapo seva inachukua tu sehemu ya rasilimali iliyoombwa na mteja.

Hali ya kikao cha HTTP

HTTP ni itifaki isiyo na sheria . Protoksi isiyo na sheria haitaki seva ya HTTP kuhifadhi maelezo au hali kuhusu kila mtumiaji kwa muda wa maombi mengi. Hata hivyo, baadhi ya programu za wavuti hutekeleza mataifa au vikao vya upande wa seva kwa kutumia vidakuzi vya HTTP au vigezo vya siri ndani ya fomu za wavuti .

Maunganisho yaliyofichwa

Njia maarufu zaidi ya kuanzisha uunganisho wa HTTP encrypted ni HTTP Salama . [27] Mbinu nyingine mbili za kuanzisha uunganisho wa HTTP iliyofichwa pia zipo: Itifaki ya Hifadhi ya Usalama wa Hifadhi , na kutumia kichwa cha Upgrade HTTP / 1.1 ili kutaja kuboresha kwa TLS. Msaada wa kivinjari kwa hizi mbili, hata hivyo, karibu haipo. [28] [29] [30]

Faili ya ujumbe

Mteja na seva wanawasiliana kwa kutuma ujumbe wa maandishi ya wazi ( ASCII ). Mteja hutuma maombi kwa seva na seva inatuma majibu .

Omba ujumbe wa

Ujumbe wa ombi linajumuisha:

  • Mstari wa ombi (kwa mfano, GET /images/logo.png HTTP / 1.1 , ambayo huomba rasilimali inayoitwa /images/logo.png kutoka kwenye seva).
  • Omba mashamba ya kichwa (kwa mfano, Kukubali-Lugha: en ).
  • Mstari usio na kitu.
  • Mwili wa ujumbe wa hiari.

Mstari wa ombi na mashamba mengine ya kichwa lazima kila mwisho na <CR> <LF> (yaani, tabia ya kurudi kwa gari na ikifuatiwa na tabia ya kulisha mstari ). Mstari usio na lazima unapaswa kuwa na <CR> <LF> tu na hakuna whitespace nyingine. [31] Katika itifaki ya HTTP / 1.1, mashamba yote ya kichwa isipokuwa Jeshi ni chaguo.

Mstari wa ombi una jina la njia tu linakubaliwa na seva ili kudumisha utangamano na wateja wa HTTP kabla ya vipimo vya HTTP / 1.0 katika RFC 1945 . [32]

Ujumbe wa majibu

Ujumbe wa majibu una mambo yafuatayo:

  • Mstari wa hali ambayo ni pamoja na msimbo wa hali na ujumbe wa sababu (kwa mfano, HTTP / 1.1 200 OK , ambayo inaonyesha kuwa ombi la mteja imefanikiwa).
  • Maswali ya kichwa cha majibu (kwa mfano, Maudhui-Aina: maandishi / html ).
  • Mstari usio na kitu.
  • Mwili wa ujumbe wa hiari.

Mstari wa hali na mashamba mengine ya kichwa lazima wotefe kwa <CR> <LF>. Mstari usio na lazima unapaswa kuwa na <CR> <LF> tu na hakuna whitespace nyingine. [31] Mahitaji haya makali ya <CR> <LF> yanapendekezwa kiasi fulani ndani ya miili ya ujumbe kwa matumizi ya mifumo mingine ya mfumo kama vile <CR> au <LF> pekee. [33]

Mfano wa kielelezo

Chini ni mazungumzo ya sampuli kati ya mteja wa HTTP na seva ya HTTP inayoendesha kwenye www.example.com , bandari ya 80. Kama ilivyoelezwa katika sehemu zilizopita, data zote zinatumwa kwa encoding ya wazi-maandishi ( ASCII ), kwa kutumia mbili- byte CR LF ('\ r \ n') line inayoishi mwishoni mwa kila mstari.

Ombi la Mteja

GET /index.html HTTP / 1.1
Shirika : www.example.com

Ombi la mteja (iliyo katika kesi hii ya mstari wa ombi na shamba moja tu la kichwa) linafuatiwa na mstari usio na tupu, ili ombi iishie na mstari wa pili, kila mmoja kwa njia ya kurudi kwa gari na ikifuatiwa na mlolongo wa mstari . Shamba la "Jeshi" linafafanua kati ya majina mbalimbali ya DNS kugawana anwani moja ya IP , kuruhusu kuwa mwenyeji wa msingi wa jina. Wakati wa hiari katika HTTP / 1.0, ni lazima katika HTTP / 1.1.

Jibu la seva

HTTP / 1.1 200 Sawa
Tarehe : Mon, 23 Mei 2005 22:38:34 GMT
Aina ya Maudhui : maandiko / html; charset = UTF-8
Maudhui-Kuandika : UTF-8
Urefu wa Maudhui : 138
Iliyotumiwa mwisho : Wed, 08 Januari 2003 23:11:55 GMT
Server : Apache / 1.3.3.7 (Unix) (Red-Hat / Linux)
Tag : "3f80f-1b6-3e1cb03b"
Kukubali-Ranges : bytes
Uunganisho : karibu

< html >
< kichwa >
  < title > Ukurasa wa Kwanza </ title >
</ kichwa >
< mwili >
  Hello World, hii ni hati rahisi sana ya HTML.
</ mwili >
</ html >

Sehemu ya kichwa ya ETAG (kitambulisho cha taasisi) kinatumiwa kuamua kama toleo la cached la rasilimali iliyoombwa limefanana na toleo la sasa la rasilimali kwenye seva. Aina ya Maudhui hufafanua aina ya vyombo vya habari vya mtandao vya data iliyotumiwa na ujumbe wa HTTP, wakati Urefu-Maudhui unaonyesha urefu wake kwa byte. HTTP / 1.1 webserver inachapisha uwezo wake wa kujibu maombi ya aina fulani za tote za waraka kwa kuweka shamba Kukubali-Ranges: byte . Hii ni muhimu, ikiwa mteja anahitaji kuwa na sehemu fulani tu [34] za rasilimali iliyotumwa na seva, ambayo huitwa tote itumikia . Wakati Uunganisho: karibu imetumwa, inamaanisha kuwa seva ya mtandao itafunga uhusiano wa TCP mara moja baada ya uhamisho wa jibu hili.

Zaidi ya mistari ya kichwa ni chaguo. Wakati Urefu-Maudhui haupotei urefu umewekwa kwa njia zingine. Coded encoding uhamisho hutumia ukubwa wa chunk wa 0 kuashiria mwisho wa maudhui. Ukodishaji wa utambulisho bila maudhui ya Muda wa Urefu unaendelea kusoma mpaka tundu limefungwa.

Maudhui-Kutafsiri kama gzip inaweza kutumika kwa compress data iliyoambukizwa.

Protoksi sawa

Itifaki ya Gopher ilikuwa itifaki ya utoaji wa maudhui ambayo iliondolewa na HTTP mapema miaka ya 1990. Protoksi ya SPDY ni mbadala kwa HTTP iliyoandaliwa kwenye Google , inasimamiwa na itifaki mpya ya HTTP, HTTP / 2 .

Angalia pia

  • Uthibitishaji wa msingi wa upatikanaji
  • Itifaki ya Maombi ya Maombi - Hifadhi ya sawa ya HTTP lakini ilitumia ujumbe wa UDP au UDP kama walengwa kwa vifaa ambavyo vina uwezo mdogo wa usindikaji. Inatumia tena HTTP na dhana nyingine za mtandao kama aina ya vyombo vya habari vya mtandao na kuunganisha mtandao (RFC 5988) [35]
  • Majadiliano ya maudhui
  • Mpangilio wa Curl - HTTP / S kupakia na kupima programu ya chanzo cha wazi
  • Uthibitisho wa kufikia ufikiaji
  • Fiddler (programu)
  • Ukandamizaji wa HTTP
  • HTTP / 2 - iliyoandaliwa na IETF ya Hypertext Transfer Protocol Bis (httpbis) kikundi cha kufanya kazi. [36]
  • HTTP-MPLEX - Kuimarishwa kwa nyuma nyuma kwa HTTP ili kuboresha muda na mtandao wa vitu wakati wa kupatikana katika mitandao iliyosaidiwa iliyopendekezwa na Robert Mattson
  • HTTPS
  • Orodha ya funguo za kuhamisha faili
  • Orodha ya mashamba ya kichwa HTTP
  • Orodha ya kanuni za hali ya HTTP
  • Uhamisho wa hali ya uwakilishi (REST)
  • Kitu chochote
  • Waka (protokete) - HTTP badala iliyopendekezwa na Roy Fielding
  • Cache ya wavuti
  • Mtandao wa Mtandao
  • Wireshark
  • YXORP , wakala wa reverse kwa itifaki ya HTTP

Vidokezo

  1. ^ a b c d Fielding, Roy T.; Gettys, James; Mogul, Jeffrey C.; Nielsen, Henrik Frystyk; Masinter, Larry; Leach, Paul J.; Berners-Lee, Tim (June 1999). Hypertext Transfer Protocol – HTTP/1.1 . IETF . RFC 2616 . https://tools.ietf.org/html/rfc2616 .
  2. ^ "RFC 7301 - Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension" . IETF. July 2014.
  3. ^ Belshe, M.; Peon, R.; Thomson, M. "Hypertext Transfer Protocol Version 2, Use of TLS Features" . Retrieved 2015-02-10 .
  4. ^ "Overall Operation" . p. 12. sec. 1.4. RFC 2616 . https://tools.ietf.org/html/rfc2616#section-1.4 .
  5. ^ Berners-Lee, Tim. "HyperText Transfer Protocol" . World Wide Web Consortium . Retrieved 31 August 2010 .
  6. ^ Tim Berners-Lee . "The Original HTTP as defined in 1991" . World Wide Web Consortium . Retrieved 24 July 2010 .
  7. ^ Raggett, Dave. "Dave Raggett's Bio" . World Wide Web Consortium . Retrieved 11 June 2010 .
  8. ^ Raggett, Dave; Berners-Lee, Tim. "Hypertext Transfer Protocol Working Group" . World Wide Web Consortium . Retrieved 29 September 2010 .
  9. ^ Raggett, Dave. "HTTP WG Plans" . World Wide Web Consortium . Retrieved 29 September 2010 .
  10. ^ a b c Simon Spero . "Progress on HTTP-NG" . World Wide Web Consortium . Retrieved 11 June 2010 .
  11. ^ "HTTP/1.1" . Webcom.com Glossary entry . Archived from the original on 2001-11-21 . Retrieved 2009-05-29 .
  12. ^ a b Fielding, Roy T.; Reschke, Julian F. (June 2014). Hypertext Transfer Protocol (HTTP/1.1): Authentication . IETF . RFC 7235 . https://tools.ietf.org/html/rfc7235 .
  13. ^ Berners-Lee, Tim; Fielding, Roy T.; Nielsen, Henrik Frystyk. "Method Definitions" . Hypertext Transfer Protocol – HTTP/1.0 . IETF . pp. 30–32. sec. 8. RFC 1945 . https://tools.ietf.org/html/rfc1945#section-8 .
  14. ^ "Method Definitions" . pp. 51–57. sec. 9. RFC 2616 . https://tools.ietf.org/html/rfc2616#section-9 .
  15. ^ Jacobs, Ian (2004). "URIs, Addressability, and the use of HTTP GET and POST" . Technical Architecture Group finding . W3C . Retrieved 26 September 2010 .
  16. ^ "POST" . p. 54. sec. 9.5. RFC 2616 . https://tools.ietf.org/html/rfc2616#section-9.5 .
  17. ^ "PUT" . p. 55. sec. 9.6. RFC 2616 . https://tools.ietf.org/html/rfc2616#section-9.6 .
  18. ^ "CONNECT" . Hypertext Transfer Protocol – HTTP/1.1 . IETF . June 1999. p. 57. sec. 9.9. RFC 2616 . https://tools.ietf.org/html/rfc2616#section-9.9 . Retrieved 23 February 2014 .
  19. ^ Khare, Rohit; Lawrence, Scott (May 2000). Upgrading to TLS Within HTTP/1.1 . IETF . RFC 2817 . https://tools.ietf.org/html/rfc2817 .
  20. ^ "Vulnerability Note VU#150227: HTTP proxy default configurations allow arbitrary TCP connections" . US-CERT . 2002-05-17 . Retrieved 2007-05-10 .
  21. ^ Dusseault, Lisa; Snell, James M. (March 2010). PATCH Method for HTTP . IETF . RFC 5789 . https://tools.ietf.org/html/rfc5789 .
  22. ^ "Method" . p. 36. sec. 5.1.1. RFC 2616 . https://tools.ietf.org/html/rfc2616#section-5.1.1 .
  23. ^ a b Ediger, Brad (2007-12-21). Advanced Rails: Building Industrial-Strength Web Apps in Record Time . O'Reilly Media, Inc. p. 188. ISBN 0596519729 . A common mistake is to use GET for an action that updates a resource. [...] This problem came into the Rails public eye in 2005, when the Google Web Accelerator was released.
  24. ^ Cantrell, Christian (2005-06-01). "What Have We Learned From the Google Web Accelerator?" . Adobe Blogs . Adobe . Retrieved 2017-07-18 .
  25. ^ a b "Cross Site Tracing" . OWASP . Retrieved 2016-06-22 .
  26. ^ "Status-Line" . p. 39. sec. 6.1. RFC 2616 . https://tools.ietf.org/html/rfc2616#section-6.1 .
  27. ^ Canavan, John (2001). Fundamentals of Networking Security . Norwood, MA: Artech House. pp. 82–83. ISBN 9781580531764 .
  28. ^ Zalewski, Michal. "Browser Security Handbook" . Retrieved 30 April 2015 .
  29. ^ "Chromium Issue 4527: implement RFC 2817: Upgrading to TLS Within HTTP/1.1" . Retrieved 30 April 2015 .
  30. ^ "Mozilla Bug 276813 – [RFE] Support RFC 2817 / TLS Upgrade for HTTP 1.1" . Retrieved 30 April 2015 .
  31. ^ a b "HTTP Message" . p. 31. sec. 4. RFC 2616 . https://tools.ietf.org/html/rfc2616#section-4 .
  32. ^ "Apache Week. HTTP/1.1" . 090502 apacheweek.com
  33. ^ "Canonicalization and Text Defaults" . sec. 3.7.1. RFC 2616 . https://tools.ietf.org/html/rfc2616#section-3.7.1 .
  34. ^ Luotonen, Ari; Franks, John (February 22, 1996). Byte Range Retrieval Extension to HTTP . IETF . I-D draft-ietf-http-range-retrieval-00 . https://tools.ietf.org/html/draft-ietf-http-range-retrieval-00 .
  35. ^ Nottingham, Mark (October 2010). Web Linking . IETF . RFC 5988 . https://tools.ietf.org/html/rfc5988 .
  36. ^ "Hypertext Transfer Protocol Bis (httpbis) – Charter" . IETF. 2012.

Marejeleo

Viungo vya nje