>> SPEAKER: Lad os tale om en anden protocol-- Hypertext Transfer
Protokol eller HTTP.
Så vi har talt om IP og TCP i tidligere videoer.
Og dem er protokoller der dikterer, hvordan oplysninger
bevæger sig fra maskine til maskine og fra program til program eller en tjeneste
at servicere via internettet, via dette netværk af routere og maskiner.
>> Men det er normalt ikke hele billedet, ikke?
Normalt når vi sender information, programmet
itself-- når data er modtagne sige, for eksempel,
email via TCP port 25 eller webside anmodning via port 80,
der er normalt et system af regler der til at behandle, hvad jeg lige har modtaget.
Og HTTP er et eksempel for bare sådan protokol.
>> HTTP er den eneste applikationslaget protokol
at vi kommer til at tale om.
Men det er et andet sæt regler dikterer, hvordan
oplysninger skal overføres og behandles via internettet.
Især HTTP specificerer præcis hvordan
man skal fremsætte en anmodning om en webside, og præcis hvordan
en server, en maskine der er vært websider,
leverer denne information tilbage til kunderne.
>> Så denne protokol ikke faktisk har noget
at gøre med, hvordan information bevæger sig fra punkt A
til punkt B. Det er virkelig den ordning
for-- det er dybest set reglerne for engagement til at arbejde med en web-side,
ligner når nogen bølger deres hånd på dig,
du er formodes at vinke tilbage.
Det er en slags konventionelle menneskelig protokol.
HTTP-protokollen bare siger, hvis du ønsker at anmode om en web
side, så sørg for dit format udseende ligesom denne-- slags ligesom formatering
en business brev, for eksempel.
Og svaret vil tilsvarende kommer efter denne protokol.
Der er andre applikationslaget protokoller
at vi ikke kommer til at taler om i videoer.
Men disse omfatter ting som File Transfer Protocol,
Simple Mail Transfer Protocol for sende e-mails, Data Distribution
Service, Remote Desktop Protokol, RDP, som
bruges, hvis du ønsker at få fjernadgang til din computer fra en anden computer,
XMPP, som ofte kendt som Jabber eller chat,
så det er den protokol for brug af chat-tjenester.
Og der er mange, mange, mange andre.
>> Så hver gang du bruger en tjeneste, tjenesten
forventer oplysninger skal received-- en anmodning
at være received-- i en meget bestemt format
og er forpligtet til at returnere oplysninger tilbage
i en meget bestemt format så godt.
>> Så lad os gå tilbage til vores illustration af os ønsker at tale til internettet.
Så vi er glade, og vi ønsker at gå til cats.com, ikke?
Så hvis vi bare taler til cats.com, vi måske sige noget lignende hey,
kan jeg se din startside?
Og cats.com vil formentlig reagere, yeah, helt sikkert.
Vær så god.
Så det er en menneskelig slags af bede og svar.
>> Hvad der ligner i HTTP?
Tja, det faktisk slags oversætter temmelig rent til noget som dette.
Vi kan sige GET / HTTP / 1.1 fra vært cats.com.
Så dybest set, hvad jeg laver her er beder om websiden www.cats.com/.
Vi plejer at udelade skråstreg dag, men det ville bare
betyde cats.com hjemmeside.
>> Åh, og af den måde, jeg har tænkt mig at være ved hjælp af HTTP-version
1.1 at kommunikere med dig.
Det er slags analog med sige, ligesom, ved den måde,
Jeg har tænkt mig at tale på fransk, eller ved den måde,
Jeg har tænkt mig at være tale på engelsk.
Det er bare formatet af protokollen.
Det er også 1,0, hvilket er ikke almindeligt anvendt længere.
Så jeg taler HTTP 1.1, og Jeg vil gerne www.cats.com/.
Venligst få det for mig.
>> Og så er der andre oplysninger, too-- dot, prik, prik der,
som er oplysninger om hvem du er så cats.com
ville vide, hvor at sende den.
Men disse er de to slags kritiske dele
i begyndelsen af en HTTP request--
ligesom når du starter en bogstav, du siger, kære, blank.
Det er meget ens i ånd til det.
>> Og hvis cats.com vil sige, åh, sikker, her du går.
De kan reagere som her-- Jeg er også reagere.
Jeg taler også HTTP 1.1.
Din anmodning er godkendt, 200 OK.
Hvad du er ved at modtager, er HTML og derefter
dot, dot, dot nogle ekstra oplysninger.
Og i selve bunden af anmodning er faktisk HTML,
det kodesprog, det Indholdet af cats.com hjemmeside.
>> Så HTTP / 1.1-- Jeg anerkender din anmodning blev accepteret via HTTP 1.1.
Din anmodning blev godkendt.
Jeg kan give dig, hvad du vil, 200 OK.
Du er ved at modtage HTML.
Og så her er den HTML, som du har anmodet om.
>> Men nogle gange vores anmodninger ikke altid gå helt efter planen.
Kan jeg se din cats.html side?
Nå, hvad nu hvis de siger, vi ikke har en cats.html side,
som synes slags urealistisk fordi de er cats.com.
Man skulle tro, de ville have cats.html.
Men OK.
Så det er sortering af konventionelle menneskelig interaktion
vi har nu haft med cats.com.
Hvordan kan det oversætter?
>> Det kan være noget velkendt for dig.
Vores anmodning kiggede nøjagtig det samme, undtagen i stedet for at få skråstreg
vi nu får cats.html.
Så hvad nu dybest set hele dette anmodning siger er du give mig
www.cats.com/cats.html.
Så værten og midten en del af denne øverste linie
der præcist angive, hvilken side jeg beder om.
Men cats.com i dette tilfælde ikke vil at kunne reagere positivt.
De ved ikke, vi taler om.
Og så det er noget, du måtte have set before-- HTTP 1.1 404 Not Found.
Jeg kunne ikke finde det, du var beder om.
Af den måde, jeg vil give dig tilbage nogle HTML, og som regel, at HTML
er indholdet af nogle 404-side.
Og i tilfælde af cats.com, er det nok
nogle søde katte i en kurv med en trist 404 ansigt ved siden af ​​dem,
fordi du kommer til at være trist, når du ikke får side
at du var på udkig efter.
>> Det er slags det grundlæggende i, hvad en protokol, HTTP-protokollen anmodninger
ligner.
De er virkelig ligner, hvordan vi ville gøre en lignende interaktion
på bare menneskelige konventioner beder om noget
og få det tilbage, eller skrive en brev og forventer et svar
brev i et bestemt format.
Det er temmelig meget, hvad HTTP er bare canonicalizing
for alle enheder, der ønsker at få adgang websider, hypertekst overførsler.
>> Så en linje af formen, dette Fremgangsmåde anmodning target HTTP-versionen,
kaldes en HTTP request line.
Det er normalt den første ting, der er transmitteres som en del af en HTTP-forespørgsel
eller hvis du beder om HTTP.
Det er lidt ligesom, som jeg sagde, siger kære, blank øverst dit brev.
De ved, at du er skrive dem et brev.
Så det er meget ens at sige, jeg kender
at de laver en HTTP-anmodning og det er bestemt format
de beder om.
>> HTTP version er sandsynligvis altid vil være HTTP / 1/1.
1.0 også findes, men er ikke virkelig brugt længere.
Med henblik på CS50, GET er formentlig altid
hvad du kommer til at være bruge, når du er faktisk
gør direkte HTTP-anmodninger.
Men POST er en anden mulighed, at vi er ikke vil tale om lige nu.
Og så anmodning-mål er hvilken side på værten server
du ønsker at få.
Som jeg sagde, at værtsnavnet er en separat linje, normalt
den anden linje af den samlede anmodning.
Og så tilsammen værten navn og målet anmodning
angive en specifik ressource søges.
I vores 404 eksempel et sekund siden, jeg spurgte igen for www.cats.com,
cats.com være vært.
Og i min anmodning linje, Jeg sagde /cats.html.
Det var min anmodning målet.
Så samlet var jeg beder om indholdet eller ressource placeret
ved www.cats.com/cats.html.
>> Og derefter baseret på, hvorvidt ressourcen findes
og om serveren kan levere ressourcen henhold til kundens
anmodning, kan du få forskellige statuskoder tilbage.
Nogle af disse statuskoder du har set fordi de er en del af svaret.
Nogle af dem, 200 OK, er sandsynligvis temmelig tavs.
Du har sikkert aldrig set en side svare 200 OK.
Du skal bare få siden.
Det er ikke som en 404 fejl, som normalt er temmelig klart.
Du normalt se, at der står 404.
>> Så lad os tale om, hvad nogle af disse statuskoder kunne være.
Igen, når serveren reagerer på os, de er
vil reagere HTTP-versionen status.
Normalt HTTP / 1.1.
Hvad er disse statuskoder kommer til at være?
Nå, kan vi få en succes.
Så i den succes, kategori, vi kan få kode 200 med teksten OK.
Hvad betyder det?
Tja, alt er godt.
Du gjorde en gyldig anmodning.
Her er et gyldigt svar.
Jeg var i stand til at levere præcis, hvad du ønskede.
>> Nogle gange kan du få andre ting at du ikke vil bemærke det samme
men er noget fiaskoer.
De er kaldet omadresseringer.
Der er to fælles dem her.
301 Flyttede Permanently-- hvad det betyder egentlig
er den side er nu på en ny placering.
Det vil leve der for evigt.
Og de fleste browsere vil automatisk omdirigere dig.
Så du aldrig rigtig se en 301, enten, medmindre du er
ved hjælp af en virkelig out-of-date browser, eventuelt
fordi 301 respons er en del af prikken, dot, dot af 301 svar.
Det fortæller dig også, hvor den nye side er.
Og så de fleste browsere bare omdirigere dig der,
under forudsætning af at du ønsker at gå der.
>> Nogle gange vil du også få 302 fundet.
Og denne ene du rent faktisk kan stadig se lejlighedsvis.
Sommetider sider flytter midlertidigt.
Så det kommer ikke til at blive bygget ind anmodningen fortæller browseren
til permanent ændre enhver tid det ser anmodningen, at du
gøre at ændre det til noget andet.
Så du kan se 302 Fundet, som dybest set
siger denne side bor et andet sted.
Men det kommer ikke til at bor der for evigt.
Det vil i sidste ende sandsynligvis gå tilbage til hvor du synes, det er.
>> Så vil du få tingene ligesom klient fejl.
Så disse er dem, du har sandsynligvis set nu.
Du har sikkert ikke set de 200s eller 300s,
men du sandsynligvis fortrolig med 400s.
Og det er, hvad vi vil snakke om i en anden, 500s samt.
>> Du kan se 401 Uautoriseret.
Normalt betyder det, at du er forsøger at få adgang en side,
men du har ikke logget på.
Så du prøver og gå til nogle profil eller noget på Facebook
eller du prøver og adgang some-- du er på arbejde.
Du forsøger at få adgang til noget på dit arbejde internet,
men du er ikke logget ind.
Du kan ikke se siden.
Du kan få en 401 uautoriseret, hvilket betyder, at vi sandsynligvis
vil være i stand til at opfylde dette ønske, men først er du nødt til at logge ind for at gøre det.
>> Omvendt kan du få 403 Forbidden, hvilket er det ikke så meget
noget, hvis du er logget ind eller ej.
Denne anmodning er ikke tilladt.
Ressourcen findes på serveren.
Men du har ikke tilladelse til at få adgang til det.
Dette er normalt interne filer, bor på serveren af ​​forskellige årsager
men er ikke beregnet til at være adgang til fra omverdenen,
og så de er forbudt.
De bor der.
Jeg siger ikke, jeg kan ikke finde den.
Men jeg siger, jeg kan ikke give det til dig.
Og det gør ikke noget, hvis du er logget ind eller ej.
Og så selvfølgelig, at meget almindelig 404 Ikke fundet.
Filen findes ikke på serveren.
Jeg vil gerne tilfredsstille Deres anmodning, men jeg kan ikke.
>> Du også nogle gange se server fejl, den mest almindelige generelt
være 500 Internal Server Error, som faktisk ikke fortælle dig noget
overhovedet om, hvad der er gået galt.
Men det er faktisk ikke du gør en fejl i din anmodning.
Det er faktisk serveren ikke at levere på anmodningen eller anden måde.
Så 500 er den generelle respons.
>> Du vil også se noget Ligesom Tjenesten er ikke tilgængelig,
som jeg mener er kode 503.
Og Gateway Timeout-- hvis du nogensinde haft en side bare
sidde der lastning og lastning og lastning
og du ved aldrig, hvis det kommer til at belastning og så til sidst det bare says--
bare giver op.
Det er en 504 Gateway timeout.
Serveren ønskede at udføre din anmodning,
men noget gik galt på serveren side--
ikke på din side-- til forårsage, at det er et problem.
Nu kunne vi afslutte historien her, men hvad jeg egentlig vil gøre nu
er jeg har tænkt mig at åbne op min browser og vise dig
hvordan du kan være i stand til at se nogle af disse statuskoder
selvom du normalt ikke ser dem.
Og vi vil gøre det ved at tage et kig på nogle udviklingsværktøjer.
>> Okay Så her er jeg nu i min browser vindue.
Og jeg ønsker at lære en lille smule mere om disse HTTP-anmodninger.
Hvordan kan jeg know-- sikkert vi vide, om et side goes-- når noget går galt,
vi får en 404.
Vi har alle set det.
Vi behøver ikke at illustrere, at.
Men hvad er nogle andre dem?
Og hvordan ville vi se, disse anmodninger i aktion?
>> Så første ting jeg vil gøre, er at åbne op for Developer Tools.
Så Developer Tools er bygget i de fleste moderne browsere
og give os mulighed for at se tingene at vi ikke på anden måde
see-- nogle ekstra oplysninger slags transmitteres nedenunder vores web
anmodninger.
Jeg bruger Google Chrome her.
Og til at åbne Developer Tools i Chrome, du bare trykke F-12,
og det kommer til at åbne det op på siden.
Når jeg skriver anmodningen, vil jeg zoome ind så vi kan se, hvad der foregår her.
Men hvad jeg har tænkt mig at gøre i min browser bar is-- og jeg vil zoome ind over her--
Jeg vil fremsætte en anmodning til www.google.com.
Vi har alle sandsynligvis gjort denne anmodning før.
Jeg har tænkt mig at trykke Enter.
>> Nu herovre i min Udvikler Værktøjer, jeg har valgt på fanen Netværk.
Og du bemærker en masse ting her.
Kig på these-- 200 OK, 200 OK, nogle af disse statuskoder kommer op.
Jeg ved ikke, hvorfor jeg får 302 Found.
Jeg var ikke klar over jeg ville se at en.
Men dybest set mærke til, at temmelig meget, hvad angår min Google request--
Jeg lavede en meget simpel anmodning om Googles side.
Og i færd med at levere min anmodning,
Google har tilsyneladende gjort en masse andre anmodninger på mine vegne.
>> Men jeg har lavet en get anmodning om Googles side, og jeg får en masse på 200 oks.
Jeg kan ikke se 200 OK på min skærm, men jeg får
en masse anmodninger, der er foretaget.
Et mere at jeg er temmelig sikker kommer til at arbejde
is-- for dem af jer, der er virkelig old-school,
du kan vide, at Facebook var ikke altid på Facebook.com.
Det var i sin vorden på wwww.thefacebook.com.
De tilsyneladende ikke kunne få adgang til Facebook.com for ganske lidt.
>> Og så hvad jeg forventer her er at få oplysninger.
Og vi vil se, om dette pander ud.
Hvad jeg forventer her er at få oplysninger
at Facebook er flyttet permanent fra thefacebook.com til Facebook.com.
Så jeg forventer et sted nær toppen af ​​mine anmodninger
ovre i min Developer Tools at få en 301 meddelelse
at Facebook er flyttet permanent.
Igen vil jeg ikke se 301 på min browser skærmen.
Og fordi det er en 301, det er en permanent flytning.
Min browser, er, at Det er en moderne browser,
er sandsynligvis vil omdirigere mig til Facebook.com alligevel.
Men lad os se hvad der sker.
>> Og nu jeg har tænkt mig at gå til thefacebook.com.
Og jep, der er det helt i top.
Det gik væk, men det var der.
Lad mig rulle op her.
Lige her i toppen.
Jeg gjorde en anmodning til thefacebook.com, og jeg får et svar
at denne side er flyttet permanent.
Og så 307 her er en intern omdirigering.
Og så dette er hvad der faktisk flyttet mig til den langt mere
velkendte www.facebook.com.
>> Så disse svarkoder gør stadig ske, selv om vi ikke ser dem.
Jeg har ikke tænkt mig at illustrerer 401, 403, 404,
fordi du har sikkert set dem på forskellige punkter.
Og 500, ville jeg bare være slags of-- vi ville få heldig
hvis fik en 500, fordi vi ikke ved, hvad servere er i øjeblikket nede overalt.
Men disse koder gøre findes, og der er en måde
at få adgang til dem, selvom vi ikke se dem på første hånd på vores systemer.
Jeg er Doug Lloyd.
Det er CS50.