SPEAKER: Spregovorimo o drugo protocol-- Hypertext Transfer Protokol, ali HTTP. Tako smo se pogovarjali o OP in TCP v prejšnjih video posnetkov. In to so protokoli ki narekujejo, kako informacije premakne od stroja do stroja in od programa do programa ali storitve servisirati prek interneta, prek ta mreža usmerjevalnikov in strojev. Ampak to je običajno ni celotna slika, kajne? Ponavadi, ko smo poslali informacije, program itself-- ko podatki prejela, recimo, na primer, V e-pošte prek TCP vrata 25 ali njene Spletna zahteva stran preko vrat 80, tam je ponavadi sistem pravil tam obdelati, kar sem pravkar prejel. In HTTP je zgled pravičnega takem protokolu. HTTP je edina protokol aplikacijski sloj da bomo govorili o tem. Ampak to je še en niz pravila narekujejo, kako informacije je treba posredovati in obdelujejo prek interneta. Zlasti HTTP določa natančno, kako eden mora vložiti zahtevo za spletna stran in kako natančno strežnik, stroj ki gosti spletne strani, zagotavlja, da so informacije nazaj k strankam. Tako da ta protokol ne dejansko imajo kaj storiti s tem, kako informacije premakne iz točke A do točke B. To je res sistem pravil for-- to je v bistvu pravila zavzetost za delo z spletne strani, podobno ko nekdo valovi svojo roko na vas, si moral pomahati nazaj. To je neke vrste običajna človeška protokol. HTTP protokol pravi samo, če želite zahtevati spletu Stran se prepričajte, vaše format videz kot this-- nekaj podobnega oblikovanja poslovno pismo, na primer. In odgovor bo podobno zapustiti glede na ta protokol. Obstajajo tudi drugi aplikacijski sloj protokoli da ne bomo do govoriti v videih. Ampak ti vključujejo stvari, kot File Transfer Protocol, SMTP za pošiljanje e-pošte, ki vrši distribucijo podatkov Storitev, Remote Desktop Protokol, RDP, ki se uporablja, če želite, da oddaljen dostop računalnik iz drugega računalnika, XMPP, ki je pogosto znan kot Jabber ali klepet, tako je ta protokol Za uporabo storitev za pomenke. In obstaja veliko, veliko, veliko drugih. Torej, vsakič, ko ga uporabljate storitev, storitev pričakuje informacije se received-- zahtevo biti received-- je z zelo posebno obliko in je potrebna za vrniti podatke nazaj v zelo posebnem formatu, kot dobro. Torej, vrnimo se k naši sliki od nas želijo govoriti z internetom. Tako smo srečni, in želimo iti cats.com, kajne? Torej, če smo šele v pogovoru z cats.com, lahko bi rekli nekaj podobnega hej, Lahko vidim svojo domačo stran? In bo cats.com verjetno odzove, ja, seveda. Izvoli. Tako da je človeška vrsta ASK-in-odgovor. Kaj pa to izgleda v HTTP? No, pravzaprav nekako prevaja zelo lepo, da kaj takega. Lahko bi rekli, GET / HTTP / 1.1 od cats.com gostiteljice. Torej v bistvu, kaj delam tukaj prosi za spletno stran www.cats.com/~~pobj. Mi ponavadi izpustite poševnica danes, da bi, ampak samo pomeni cats.com domačo stran. Oh, in mimogrede, jaz grem da se z uporabo HTTP različico 1.1 za komunikacijo z vami. To je nekako analogno rekoč, kot so, mimogrede, Jaz bom govoril v francoščini ali mimogrede, Bom, da bo govoril v angleščini. To je samo oblika protokola. To je tudi 1,0, ki je navadno ne uporabljajo več. Torej govorim HTTP 1.1, in Rad bi www.cats.com/~~dobj. Prosimo, da bi dobili, da je za mano. In potem je tu še druge informacije, too-- dot, dot, dot tam, ki je informacije o ki ste tako cats.com bi vedeli, kje da ga pošljete. Ampak to sta dva vrsta kritičnih delov na samem začetku od HTTP request-- tako kot, ko začnete pismo rečeš, dragi, blank. To je zelo podobna v duhu tistemu. In če cats.com se dogaja, da pravijo, oh, seveda, tukaj imaš. Morda se odzove kot this-- Jaz sem tudi odzivati. Prav tako sem govoril HTTP 1.1. Vaša zahteva je odobrena, 200 OK. Kaj ste na tem, da prejeli, je HTML in potem dot, dot, dot nekaj dodatnih informacij. In čisto na dnu Zahteva je dejansko HTML, pribitek jezik je Vsebina cats.com domači strani. Torej HTTP / 1.1-- Potrjujem vašem Zahteva je bila sprejeta preko HTTP 1.1. Vaša zahteva je bila odobrena. Jaz ti lahko dam, kar hočeš, 200 OK. Ste o tem, da boste prejeli HTML. In potem je tu je HTML, ki ste jih zahtevali. Ampak včasih naše zahteve ne Vedno gredo precej v skladu z načrtom. Lahko vidim vaš cats.html stran? No, kaj pa če pravijo, smo nimate stran cats.html, ki se zdi nekako nerealen ker oni cats.com. Mislil bi si, da bi imeli cats.html. Ampak OK. Torej, to je nekako od običajna človeška interakcija smo zdaj imeli s cats.com. Kako se to prevede? To je lahko nekaj, kar pozna, da vas. Naša zahteva je pogledal popolnoma enaka, razen namesto pridobivanje poševnico smo zdaj dobili cats.html. Torej, kaj zdaj v bistvu ves ta Zahteva se pravi, se prosim dajte mi www.cats.com/cats.html. Torej gostitelja in sredino del tega zgornji vrstici tam natančno navesti tisto stran sem prosil za. Ampak cats.com v tem primeru ne bo da bi lahko pozitivno odzove. Oni ne vedo, da smo govoriš. In tako je to nekaj, kar boste morda morali videl before-- HTTP 1.1 404 Not Found. Nisem mogel najti kaj ste bili prosi za. Mimogrede, bom dal nazaj nekaj HTML, in ponavadi da HTML je vsebina neke 404 strani. In v primeru cats.com, je verjetno nekaj srčkan mačke v košari z Žalostna 404 face poleg njih, ker si bo Žalostno, če ne boste dobili stran ki ste ga iskali. To je nekako osnov kaj protokol, ki zahteva protokola HTTP izgleda kot. Oni so res podobni, kako smo bi podoben interakcije v samo človeških konvencijah prosi za nekaj, in jo dobili nazaj ali pisanjem pismo in pričakujejo odgovor črka v določenem formatu. To je precej, kar HTTP je samo canonicalizing za vse naprave, ki želijo dostop spletne strani, transferji hipertekst. Torej linija obliki, to Metoda zahteva ciljno HTTP verzija, se imenuje zahtevo HTTP linijo. To je ponavadi prva stvar, ki je prenašajo kot del zahteve HTTP ali če ste prosi za HTTP. To je nekako všeč, kot sem rekel, rekel dragi, blank na vrhu vašega pisma. Vedo, da ste jim pisanje pisma. To je torej zelo podobna bi rekel, vem da oni tako zahtevo HTTP in to je predvsem oblika oni prosijo za. HTTP verzija je verjetno vedno bo HTTP / 1/1. 1.0 Prav tako obstaja, vendar ni res uporablja več. Za namene CS50, GET je verjetno vedno kaj bo uporabljate, ko ste dejansko vlaganje prošenj za neposredne HTTP. Ampak POST je drugo možnost, da smo Ne bom govoril o prav zdaj. In potem zahteva, cilj je kakšna stran na strežniku gostitelja bi radi, da bi dobili. Kot sem rekel, da je ime gostitelja je ločen linija, običajno druga linija celotnega zahtevka. In tako skupaj, gostitelja ime in ciljna zahtevek določajo poseben se iščejo vir. V našem 404 primer drugo nazaj, sem je bil ponovno prosi za www.cats.com, cats.com pa gostitelj. In v mojem zahtevo linije, Rekel sem /cats.html. To je bila moja prošnja tarča. Torej, na splošno sem bil prosi za vsebino ali vir nahaja na www.cats.com/cats.html~~pobj. Nato pa glede na to ali obstaja vir in ali lahko strežnik dostavi vir v skladu s stranko je Zahteva, boste morda dobili različne statusne kode nazaj. Nekatere od teh statusnih kod ste jih videli ker oni so del odgovora. Nekateri izmed njih, 200 OK, so Verjetno precej tiho. Ste verjetno nikoli videl stran odzove 200 OK. Pravkar ste dobili stran. To ni všeč napako 404, ki je ponavadi zelo jasen. Si ponavadi vidimo, da je pravi 404. Torej, kaj je govoril o tem, kaj nekateri od teh statusnih kod lahko. Še enkrat, ko strežnik se odziva na nas, oni so dogaja, da se odzove statusa HTTP različice. Običajno HTTP / 1.1. Katere so te statusne kode bo? No, morda smo dobili uspeh. Torej, v kategoriji uspehu, smo morda dobili kodo 200 z besedilnim OK. Kaj to pomeni? No, vse je dobro. Naredili ste veljavno zahtevo. Tukaj je veljaven odgovor. Bil sem sposoben dostaviti točno to, kar si je želel. Včasih boste morda dobili druge stvari da ne boste opazili takoj vendar so nekoliko neuspehi. Oni imenovane prevoja. Tam je dve skupni tisti tukaj. 301 premaknjene Permanently-- kaj to v bistvu pomeni, je stran, ki je zdaj na novo lokacijo. To bo živel večno. In večina brskalnikov vas samodejno preusmeri. Tako ne boste nikoli zares videli 301, in sicer, če ste uporabo res out-of-datum brskalnik, morda, ker odziv 301 del pika, pika, pika odziva 301. Prav tako vam pove, kje je nova stran. In tako Večina brskalnikov samo vas preusmeri tja, ob predpostavki, da želite iti tja. Včasih boste dobili tudi 302 našel. In to ste dejansko ena Morda še vedno videti občasno. Včasih strani premakniti začasno. Tako da ne bo treba zgraditi v zahteva povedal brskalnik za trajno spremenite kadarkoli se vidi zahtevo, da vas narediti, da ga spremeni v nekaj drugega. Tako boste lahko videli 302 Najdeno, ki v osnovi pravi, da je ta stran živi nekje drugje. Ampak to ne bo tam živijo večno. To bo na koncu verjetno šel nazaj, kjer mislite, da je. Potem boste dobili stvari kot napak strank. Torej, to so tisti, ki ste jih verjetno opazili, zdaj. Ste verjetno niste videli se 200S ali 300S, vendar ste verjetno seznanjeni z 400S. In to je tisto, kar bomo govorili približno v sekundi, 500S tudi. Morda boste videli 401 Nepooblaščeno. Običajno to pomeni, da ste poskušal dostopati do strani, vendar niste prijavljeni. Torej, poskusite in pojdite na nekatere profil ali kaj podobnega na Facebooku ali pa poskusite in dostop some-- ste v službi. Ste poskušali dostopati do nekaj na internetu Vaše delo je, vendar niste prijavljeni. Ne, ne moreš videti stran. Morda boste dobili 401 nepotrjeno, kar pomeni, da verjetno bo lahko za izpolnitev te zahteve, vendar morate najprej prijaviti v to storijo. Nasprotno, lahko dobite 403 Forbidden, ki je v resnici ne pomembno, če ste prijavljeni ali ne. Ta zahteva ni dovoljeno. Obstaja vir na strežniku. Ampak ne morete dostopati do njega. To je običajno interni datoteke, živi na strežniku za različnih razlogov vendar niso namenjeni, da bi pogledali iz zunanjega sveta, in tako so prepovedani. Živijo tam. Ne pravim, da ne morem najti. Ampak jaz pravim da ne morem dati za vas. In ni važno, če ste prijavljeni ali ne. In potem seveda, zelo pogosti 404 Not Found. Datoteka ne obstaja na strežniku. Rad bi, da izpolnjuje vaša zahteva, ampak ne morem. Prav tako je včasih videti strežnika napake, najpogostejši splošno pa 500 Notranja napaka strežnika, ki vam ne dejansko povedati ničesar sploh o tem, kaj je šlo narobe. Ampak to ni dejansko vam izdelavo napaka na vašo zahtevo. To je pravzaprav strežnik ni dostaviti na zahtevo nekako. Torej 500 je splošen odziv. Prav tako boste videli nekaj kot storitev ni na voljo, kar menim, da je koda 503. Gateway Timeout-- če ste kdaj imeli stran, samo sedeti tam nakladanje in nakladanje in nakladanje in nikoli ne veš, če se dogaja, da obremenitev in potem na koncu je samo says-- samo odneha. To je 504 Gateway Timeout. Strežnik je želel izvršiti svojo zahtevo, ampak nekaj je šlo narobe na strežniku side-- ni na side-- do povzroči, da je to problem. Sedaj lahko končamo zgodbo tukaj, ampak kaj sem dejansko dogaja storiti zdaj se bom odprla moj brskalnik in vam pokaže, kako bi mogli videti nekatere od teh statusnih kod tudi če jih običajno ne vidimo. In bomo to storiti tako, da se poglej na nekaterih razvojnih orodij. Vredu Torej, tukaj sem zdaj v mojem oknu brskalnika. In želim, da se naučijo malo Več o teh zahtevah HTTP. Kako know-- zagotovo vemo, če je Stran goes-- ko gre kaj narobe, smo dobili 404. Smo vsi videli, da. Mi ne potrebujemo za ponazoritev tega. Ampak kaj so nekateri drugi tisti? In kako bi se vidimo te zahteve v akciji? Torej prva stvar, da bom storiti, je odpreti Orodja za razvijalce. Torej so orodja za razvijalce zgrajena v večini sodobnih brskalnikov in nam omogočajo, da vidite stvari da ne bomo drugače see-- nekatere dodatne informacije vrste prenašajo pod naši spletni zahtevki. Jaz sem z uporabo Google Chrome tukaj. In odpreti Orodja za razvijalce v Chromu, ki ste jo pravkar udaril F-12, in to se dogaja, da se odpre da se ob strani. Ko sem tip zahtevo, bom povečavo tako da bomo lahko videli, kaj se dogaja tukaj. Ampak kaj bom storiti v mojem brskalniku bar is-- in bom povečavo čez here-- Bom zahtevek www.google.com. Vsi smo verjetno nastala ta zahteva prej. Bom udaril Enter. Zdaj, tukaj, v mojem Developer Orodja, ki sem jih izbral zavihek Omrežje. In opazite veliko stvari tukaj. Poglej these-- 200 OK, 200 OK, nekateri od teh statusnih kod prihajajo. Ne vem, zakaj sem že 302 Found. Nisem vedel, da sem videl, da enega. Ampak v bistvu opazil, da precej veliko, glede na moj Google request-- Naredila sem zelo preprost Zahteva za Googlovo stran. In v procesu dali mojo prošnjo, Google se je očitno na veliko drugih zahtev v mojem imenu. Ampak sem na zahtevo dobite za Google stran in sem že veliko 200 OKS. Jaz ne vidim 200 OK na moj zaslon, ampak dobivam veliko prijav, ki so bile narejene. Ena bolj, da sem precej Prepričajte se bo delo is-- za tiste, ki ste so res old-school, morda veste, da je Facebook ni vedno na Facebook.com. V prvih dneh je bilo na wwww.thefacebook.com. Ti očitno ne bi mogla dobiti dostop na Facebook.com za kar nekaj časa. In kaj sem pričakoval tukaj je, da bi dobili informacije. In bomo videli, če je to solin ven. Kaj sem pričakoval tukaj je, da bi dobili informacije da je Facebook za stalno preselil od thefacebook.com na Facebook.com. Tako da sem nekje pričakoval na vrhu mojih prošenj več kot v mojih Orodja za razvijalce da bi dobili obvestila 301 da je Facebook za stalno preselila. Še enkrat, ne bom videti 301 na moji brskalnika zaslonu. In ker je 301, to je trajna poteza. Moj brskalnik, je, da je sodoben brskalnik, je verjetno, da se preusmeri me Facebook.com anyway. Ampak poglejmo, kaj se dogaja. In zdaj bom pojdite na thefacebook.com. In ja, tam je prav na vrhu. Je odšel, vendar je bilo tam. Dovolite mi, da se pomaknete tukaj. Prav tu na vrhu. Sem vložila zahtevek thefacebook.com, in sem že odgovor da je ta stran za stalno preselila. In potem 307 je tu interna preusmeritev. In zato je to tisto, kar je pravzaprav me preselili v veliko bolj seznanjeni www.facebook.com. Torej ti odzivne oznake storiti še zgodilo, tudi če jih ne vidim. Jaz ne bom ponazoritev 401, 403, 404, ker ste verjetno videli tistih, ki na različnih točkah. In 500, jaz bi samo se vrsta of-- sva srečo če je dobil 500, ker ne vemo, kaj strežniki so povsod trenutno dol. Toda te kode storiti obstajajo, in tam je pot dostop do njih, tudi če ne bomo jih videli prve roke o naših sistemih. Sem Doug Lloyd. To je CS50.