SPEAKER: Razgovarajmo o drugo protocol-- HyperText Transfer Protokol, ili HTTP. Tako smo razgovarali o IP i TCP prethodnih videa. A oni su protokoli koji diktiraju kako informacije kreće od stroja do stroja i od programa do programa ili usluge za uslugu putem interneta, preko Ova mreža usmjerivač i strojeva. Ali to obično nisu cijela slika, zar ne? Obično kada smo poslali informacije, program itself-- kada podaci primili, recimo, na primjer, u e-mail preko TCP port 25 ili njegove Zahtjev web stranice preko porta 80, obično postoji sustav pravila postoji obraditi ono što sam upravo primio. I HTTP je primjer od samo takve protokola. HTTP jedini protokol aplikacijski sloj da ćemo razgovarati o tome. Ali, to je još jedan skup pravila diktiraju kako informacije koje se prenose i obrađuju putem interneta. Konkretno, HTTP navodi kako je točno mora podnijeti zahtjev za web-stranica i točno kako poslužitelja, stroj koje domaćini web stranice, donosi tu informaciju natrag klijentima. Dakle, ovaj protokol ne zapravo ništa učiniti s koliko informacija kreće od točke A do točke B. To je stvarno sustav pravila for-- to je u osnovi pravila angažman za rad s web stranice, slično kad netko Valovi svoje ruke na vas, ti si trebao uzvratio. To je neka vrsta konvencionalna ljudski protokol. HTTP protokol jednostavno kaže, ako Želite li zatražiti web stranica, provjerite je li vaš format izgleda kao this-- Nešto poput oblikovanja poslovno pismo, npr. A odgovor će na sličan način dolaze prema ovom protokolu. Postoje i druge aplikacijski sloj protokola da mi se ne ide na razgovarati o u spotovima. No, to uključuje stvari kao što su File Transfer Protocol, Simple Mail Transfer Protokol slanje e-pošte, Distribucija podataka Usluga, Remote Desktop Protokol, RDP, koji koristi ako želite daljinski pristup računalo s drugog računala, XMPP, što je često poznat kao Jabber ili chata, pa to je protokol za korištenje chat usluge. A tu su i mnogi, mnogi, mnogi drugi. Zato svaki put kada koristite usluga, usluga očekuje podatke biti received-- zahtjev biti received-- u vrlo posebno formatu te je potrebno da vratiti podatke natrag na poseban oblik i. Tako ćemo se vratiti na našem crtežu od nas želi razgovarati s interneta. Tako smo sretni i želimo ići na cats.com, zar ne? Dakle, ako mi samo govorimo da cats.com, mogli bismo reći nešto poput hej, mogu vidjeti vašu početnu stranicu? I cats.com vjerojatno će odgovoriti, da, sigurno. Izvoli. Tako da je ljudsko vrsta ASK-a-odgovor. Što to izgledati u HTTP? Pa, to je zapravo vrsta prevodi prilično čisto ovako nešto. Mogli bismo reći GET / HTTP / 1.1 od domaćina cats.com. Tako je u osnovi ono što ja radim ovdje traži web stranice www.cats.com/~~pobj. Mi obično izostaviti udarac samo danas, ali to bi znači cats.com početnu stranicu. Oh, i usput, idem da se pomoću HTTP verziju 1.1 komunicirati s vama. To je vrsta analogne govoreći, kao što je, usput, Idem se govori na francuskom, ili na putu, Ja ću biti govori na engleskom jeziku. To je samo oblik protokola. Također je 1,0, što je ne obično koriste više. Tako sam govorio HTTP 1.1, a Želim www.cats.com/~~dobj. Molimo dobili da je za mene. A tu je i druge podatke, too-- točka, točka, točka postoji, što je podatak o tko si tako cats.com bi znati gdje poslati ga. No, to su dva vrsta kritičnih dijelova na samom početku HTTP request-- baš kao kada pokrenete Pismo koje kažu, draga, prazno. To je vrlo slično u duhu na to. A ako cats.com će kažu, oh, jeste, ovdje te ići. Oni mogu odgovoriti kao this-- ja sam reagirati. Također govorim HTTP 1.1. Vaš zahtjev odobren, 200 OK. Što ste o dobivaju je HTML, a zatim točka, točka, točka neke dodatne podatke. A na samom dnu Zahtjev je zapravo HTML, označni jezik je Sadržaj cats.com početnu stranicu. Dakle HTTP / 1.1-- sam potvrđujete da Zahtjev je prihvaćen preko HTTP 1.1. Vaš zahtjev je odobren. Mogu vam dati ono što želite, 200 OK. Vi ste o dobiti HTML. I onda ovdje je HTML koji ste tražili. Ali ponekad naši zahtjevi ne uvijek ići baš po planu. Mogu li vidjeti vašu cats.html stranicu? Pa, što ako oni kažu, mi nemaju stranicu cats.html, što se čini vrsta nerealno jer oni cats.com. Čovjek bi pomislio da bi cats.html. Ali OK. Dakle, to je vrsta od konvencionalni ljudske interakcije sada smo imali s cats.com. Kako to prevesti? To bi moglo biti nešto upoznat s tobom. Naš zahtjev je izgledao isti, osim umjesto uzimajući slash sada dobivamo cats.html. I što sada zapravo to cijelo Zahtjev govori se molim vas dajte mi www.cats.com/cats.html. Dakle domaćina i sredine dio tog gornjem retku Postoji pokazuju upravo ono stranica tražim. No cats.com u ovom slučaju ne ide biti u mogućnosti odgovoriti pozitivno. Oni ne znaju što pričaju. I tako je to nešto što bi moglo imati Vidio before-- HTTP 1.1 404 nije pronađen. Nisam mogao naći ono što što su tražili. Usput, ja ću vam dati natrag neke HTML, i obično to HTML je sadržaj nekih 404 stranica. A u slučaju cats.com, to je vjerojatno neke slatka mačke u košari s tužno 404 lice pored njih, jer ti ćeš biti tužna kada ne dobijete stranicu da ste bili u potrazi za. To je vrsta osnovama što protokol, zahtjevi HTTP protokol izgledati. Oni su jako slični kako smo bi sličan interakciju u samo ljudskim konvencijama tražeći nešto i uzimajući ga natrag ili pisanje pismo i očekuju odgovor pismo u određenom formatu. To je ljepušan velik dio onoga što HTTP je samo canonicalizing za sve uređaje koje žele pristupiti web stranice, hipertekst transferi. Dakle linija obliku, to Metoda zahtjev meta HTTP verziju, zove HTTP zahtjev liniju. To je obično prva stvar koja je prenosi kao dio HTTP zahtjev ili ako tražimo za HTTP. To je vrsta kao što, kao što sam rekao, govoreći draga, prazno na vrhu vaše pismo. Oni znaju da si pisanje im pismo. Dakle, to je vrlo sličan kako kaže, ja znam da oni što HTTP zahtjev i to je posebno oblik oni traže. HTTP verziju je vjerojatno Uvijek će biti HTTP / 1/1. 1,0 također postoji, ali se ne stvarno koristi više. Za potrebe CS50, GET je vjerojatno uvijek ono što će biti koristite kad ste zapravo obavljanje izravne HTTP zahtjeve. Ali POST je još jedna mogućnost da smo ne ide razgovarati o sada. A onda je zahtjev-meta ono stranicu na domaćina poslužitelj želite dobiti. Kao što sam rekao, da je ime računala je zasebna linija, najčešće U drugom redu od ukupnog zahtjeva. I tako uzeti zajedno, domaćin ime i meta zahtjev odrediti specifična resurs se traži. U našem primjeru 404 sekunde prije, sam ponovno traži www.cats.com, cats.com biti domaćin. I u mom zahtjev liniji, Rekao sam /cats.html. To je moja ciljna zahtjev. Dakle, sveukupno sam pitao za sadržaj ili resurs na www.cats.com/cats.html~~pobj. I onda na temelju bilo resurs postoji i da li poslužitelj može isporučiti resurs temelju klijenta Zahtjev, možda ćete dobiti različite šifre statusa natrag. Neke od ovih šifri statusa koje ste vidjeli jer oni su dio odgovora. Neki od njih, 200 je u redu, su vjerojatno prilično tiha. Vjerojatno ste nikada nije vidio stranica 200 odgovorite OK. Vi samo dobiti stranicu. To nije kao pogrešku 404, što je obično prilično jasno. Obično se vidi da ona kaže 404. Dakle, pričajmo o tome što su neki tih statusnih kodova moglo biti. Opet, kada server odgovara na nas, oni su će odgovoriti HTTP statusa verzije. Obično HTTP / 1.1. Koje su to šifre statusa će biti? Pa, mogli bismo dobiti uspjeh. Tako je u kategoriji uspjeh, mi može dobiti kod 200 s tekstom OK. Što to znači? Pa, sve je dobro. Ti su valjani zahtjev. Evo valjan odgovor. Bio sam u mogućnosti da dostavi točno ono što ste htjeli. Ponekad možda ćete dobiti druge stvari da nećete primijetiti odmah ali su nešto neuspjesi. Oni se nazivaju preusmjeravanja. Postoje dvije zajedničke one ovdje. 301 premjeĹĄteni Permanently-- Što to zapravo znači je stranica sada na novoj lokaciji. Ona će tamo živjeti zauvijek. I većina preglednici vas automatski preusmjeriti. Tako da nikada nećete zaista vidjeti 301, ili, ako nisi koristite stvarno out-of-date preglednik, eventualno, jer je 301 odgovor dio točka, točka, točka od 301 odgovora. To vam također govori gdje je nova stranica je. I tako Većina preglednika Samo vas preusmjeriti tamo, uz pretpostavku da želite ići tamo. Ponekad ćete također dobiti 302 pronađeno. A ovaj što zapravo Možda još vidjeti povremeno. Ponekad stranice premjestiti privremeno. Dakle, to neće biti izgrađen u zahtjev reći preglednik trajno promijeniti u bilo koje vrijeme vidi zahtjev da vas čine ga promijeniti u nešto drugo. Tako možete vidjeti 302 Pronađeno, koji u osnovi kaže ovu stranicu živi negdje drugdje. Ali to neće tamo živjeti vječno. To će na kraju vjerojatno ići tamo gdje misliš da je. Tada ćete dobiti stvari kao klijent pogreške. Dakle, to su oni koje ste vjerojatno vidjeli, sada. Vjerojatno niste vidjeli su 200s ili 300S, ali vjerojatno ste upoznati s 400s. I to je ono što ćemo govoriti o u sekundi, 500S, kao dobro. Možda ćete vidjeti 401 Neovlaštena. Obično to znači da ste Pokušavam pristupiti stranici, ali niste prijavljeni. Dakle, probati i ići na neke profil ili nešto na Facebooku ili ste probati i pristup some-- ste na poslu. Pokušavate pristupiti nešto na posao je internet, ali niste prijavljeni. Ne možete vidjeti stranicu. Možda ćete dobiti 401 neovlašteno, što znači da je vjerojatno će biti u stanju zadovoljiti ovaj zahtjev, ali prvo trebate prijaviti za to. Isto tako, možda ćete dobiti 403 Zabranjeni, što je to zapravo ne bitno ako ste prijavljeni ili ne. Ovaj zahtjev nije dopušteno. Resurs postoji na poslužitelju. Ali ne smiju pristupiti. To je obično interni datoteke koje živjeti na poslužitelju raznih razloga ali nisu namijenjeni da budu pristupiti iz vanjskog svijeta, pa im je zabranjeno. Oni tamo žive. Ne kažem ja ne mogu ga naći. Ali ja govorim da ne mogu dati. I nije važno ako ste prijavljeni ili ne. I onda naravno, vrlo čest 404 nije pronađen. Datoteka ne postoji na poslužitelju. Želio bih zadovoljio Vaš zahtjev, ali ne mogu. Također se ponekad vidjeti poslužitelj pogreške, najčešći općenito se 500 Interna pogreška poslužitelja, koji ne zapravo vam reći ništa uopće o tome što je pošlo po zlu. Ali to nije zapravo radite pogreška u vašem zahtjevu. To je zapravo server nije dostaviti na zahtjev nekako. Dakle 500 je opći odgovor. Također ćete vidjeti nešto kao i usluge nedostupan, što vjerujem da je broj 503. I Gateway Timeout-- ako ste ikada imali stranicu samo sjediti utovar i utovar i utovar i nikad ne znate ako će se opterećenja i onda na kraju to samo says-- Samo odustaje. To je 504 Gateway Timeout. Poslužitelj htjela izvršiti vaš zahtjev, ali nešto je pošlo po krivu na poslužitelju side-- nije na side-- na uzrokovati da se problem. Sada smo mogli završiti priču ovdje, ali ono što sam zapravo ću učiniti sada je ću otvoriti moj preglednik i pokazati kako biste mogli vidjeti neki od tih kodova statusa čak i ako ne općenito ih vidjeli. A što ćemo učiniti da se Pogledajte neke razvojne alate. Dobro Dakle, ovdje sam Sada je u mom prozoru preglednika. I ja želim naučiti malo više o tim HTTP zahtjeva. Kako know-- sigurno znamo je li Stranica goes-- kada nešto pođe po zlu, smo dobili 404. Svi smo vidjeli da je. Mi ne treba da ilustriraju da. No, ono što su neke druge one? A kako bi smo vidjeli ti zahtjevi u akciji? Dakle, prva stvar koju ću učiniti je otvoriti razvojne alate. Dakle, Razvojni alati su izgradili u većini modernih preglednika i omogućiti nam da vidimo stvari da mi nije drugačije see-- neke dodatne informacije vrsta prenosi ispod naše web zahtjevi. Ja sam koristeći Google Chrome ovdje. I otvoriti razvojne alate u Chrome, samo pritisnite F-12, i to će otvoriti to se na strani. Jednom sam upišite zahtjev, ja ću uvećanje tako da možemo vidjeti što se ovdje događa. Ali što ću raditi u svom pregledniku bar is-- i ja ću zumiranje tijekom here-- Ja ću napraviti zahtjev www.google.com. Svi smo vjerojatno napravili ovaj zahtjev prije. Idem pritisnite Enter. Sada, ovdje u mom razvijanja Alati, ja sam izabrao karticu Network. I primijetite puno stvari ovdje. Pogledajte these-- 200 OK, OK, neka 200 tih kodova statusa dolaze. Ne znam zašto sam uzimajući 302 Pronađeno. Nisam znala da ću vidjeti tu jednu. Ali zapravo primijetiti da lijepa mnogo, u smislu mog Google request-- Napravila sam vrlo jednostavan Zahtjev za Googleovu stranicu. I u procesu isporukom moj zahtjev, Google navodno je napravio puno drugih zahtjeva u moje ime. Ali ja sam napravio GET zahtjev za Googlea stranica i ja sam uzimajući puno 200 Oks. Ne vidim 200 OK na moj zaslon, ali ja sam sve puno zahtjeva koje su napravljene. Jedan više da sam lijepa sigurno ide na posao is-- za one od vas koji su stvarno stare škole, znate da je Facebook ne uvijek na Facebook.com. U svojim ranim danima bilo je na wwww.thefacebook.com. Oni očito nisu mogli dobiti pristup na Facebook.com dosta za neko vrijeme. I tako ono što sam očekivao Ovdje je dobiti informacije. Pa ćemo vidjeti je li to tave van. Što sam očekivao ovdje je dobiti podatke da je Facebook je trajno preseljena od thefacebook.com na Facebook.com. Dakle, ja sam očekivao negdje pri vrhu moje zahtjeve više u mojim Razvojni alati dobiti 301 obavijest da je Facebook je preselio trajno. Opet, neću vidjeti 301 na mom preglednika zaslonu. I zato što je 301, to je stalni potez. Moj preglednik, kao da je To je moderan preglednik, vjerojatno će preusmjeriti mi Facebook.com svejedno. Ali da vidimo što se događa. A sada ću ići thefacebook.com. I Yep, tu je pravo na vrhu. Ona ode, ali bilo je tamo. Dopustite mi dođite ovdje. Upravo ovdje na vrhu. Napravila sam zahtjev thefacebook.com, i ja dobijam odgovor da je ova stranica je trajno preseljena. A onda 307 ovdje interni preusmjeravanje. I tako to je ono što je zapravo me preselio u mnogo više upoznati www.facebook.com. Tako su ti kodovi odgovora učiniti još dogoditi, čak i ako ih ne vidim. Neću se ilustriraju 401, 403, 404, jer ste vjerojatno vidjeli one na raznim mjestima. A 500, ja bi samo biti vrsta of-- bismo se posreći ako je dobio 500, jer mi ne znamo što je poslužitelji su trenutačno dolje gdje. Ali ovi kodovi napraviti postoje, a tu je i način kako im pristupiti, čak i ako to ne učinimo ih iz prve ruke vidjeti u našim sustavima. Ja sam Doug Lloyd. Ovo je CS50.