SPEAKER: Laten we praten over een ander protocol-- het Hypertext Transfer Protocol, of HTTP. Dus we hebben gesproken over IP en TCP in de vorige video's. En dat zijn protocollen die bepalen hoe de informatie bewegingen van machine tot machine en per programma of dienst aan de dienst via het internet, via dit netwerk van routers en machines. Maar dat is meestal niet het hele beeld, toch? Meestal als we sturen gegevens, het programma itself-- wanneer gegevens is ontvangen, zeg bijvoorbeeld in e-mail via TCP poort 25 of webpagina verzoek via poort 80, er is meestal een systeem van regels is er om te verwerken wat ik zojuist heb ontvangen. En HTTP is een voorbeeld van zo'n protocol. HTTP is de enige applicatielaag protocol dat we gaan om te praten over. Maar het is een andere set regels dicteren hoe informatie dient te worden doorgegeven en verwerkt via het internet. Vooral HTTP specificeert hoe men moet een verzoek doen een webpagina en precies hoe een server, een machine dat hosts webpagina's, levert die informatie terug naar klanten. Dus dit protocol niet daadwerkelijk iets hebben te maken met hoe informatie beweegt van punt A punt B. Het is echt het stelsel van regels voor-- het is eigenlijk de regels van inzet voor het werken met een webpagina, Soortgelijke wanneer iemand golven hun hand op je af, je verondersteld om terug te zwaaien. Dat is een soort van conventionele menselijke protocol. HTTP-protocol gewoon zegt, als je wilt een web aanvragen pagina, zorg ervoor dat uw formaat looks zoals dit-- soort als opmaak een zakelijke brief, bijvoorbeeld. En het antwoord zal op dezelfde wijze komen volgens dit protocol. Er zijn andere applicatielaag protocollen dat we niet van plan om praten in video's. Maar deze dingen zoals het File Transfer Protocol, Simple Mail Transfer Protocol het verzenden van e-mails, de Data Distribution Service, Remote Desktop Protocol, RDP, dat wordt gebruikt als u op afstand toegang uw computer vanaf een andere computer, XMPP, die vaak is bekend als Jabber of chatten, dus dit is het protocol voor het gebruik van chatdiensten. En er zijn vele, vele, vele anderen. Dus elke keer dat je gebruikt een dienst, de dienst verwacht informatie een verzoek om te worden received-- received-- in te zeer bijzonder formaat en is nodig om terug informatie terug in een bepaald formaat ook. Dus laten we gaan terug naar onze illustratie wij willen het internet te praten. Dus we zijn blij, en we willen naar cats.com, toch? Dus als we gewoon praten met cats.com, We zouden kunnen zeggen iets als hey, kan ik uw startpagina zien? En cats.com zal waarschijnlijk reageren, ja, zeker. Alsjeblieft. Dus dat is een menselijke soort van vraag-en-antwoord. Wat betekent dat eruit in HTTP? Nou, het eigenlijk wel vertaalt vrij netjes om zoiets. We zouden kunnen zeggen GET / HTTP / 1.1 van host cats.com. Dus eigenlijk wat ik hier aan het doen is vraagt ​​de webpagina www.cats.com/. We weglaten meestal de slash tegenwoordig, maar dat zou slechts bedoel cats.com homepage. Oh, en door de manier, ik ga te zijn met behulp van HTTP-versie 1.1 met u te communiceren. Dat is een soort van analoog aan zeggen, als, door de manier, Ik ga spreken in het Frans, of door de manier, Ik ga om te spreken in het Engels. Dat is gewoon het formaat van het protocol. Ook is 1,0, wat niet meer algemeen gebruikt. Dus ik spreek HTTP 1.1, en Ik wil graag www.cats.com/. Neem dat voor mij. En dan is er nog andere informatie, too-- de stip, punt, punt daar, die informatie over wie je bent zo cats.com zou weten waar om het te verzenden. Maar dit zijn de twee soort van kritische onderdelen aan het begin van een HTTP request-- net als wanneer je begint een letter u zegt, lieve, leeg. Dit is zeer vergelijkbaar met die in de geest. En als cats.com gaat zeggen, oh, zeker, hier ga je. Ze kunnen reageren als dit-- Ik ben ook reageert. Ik spreek ook HTTP 1.1. Uw aanvraag wordt goedgekeurd, 200 OK. Wat je staat op het punt ontvangen is HTML en vervolgens dot, dot, dot wat extra informatie. En aan de onderkant van de verzoek eigenlijk de HTML, de opmaaktaal, de inhoud van cats.com homepage. Dus HTTP / 1.1-- Ik erken uw verzoek werd via HTTP 1.1 geaccepteerd. Uw aanvraag werd goedgekeurd. Ik kan je geven wat je wilt, 200 OK. Je staat op HTML ontvangen. En dan is hier de HTML die u hebt aangevraagd. Maar soms onze verzoeken niet altijd vrij volgens plan. Kan ik je cats.html pagina te zien? Nou, wat als ze zeggen, we niet een cats.html pagina hebben, die lijkt soort onrealistisch omdat ze cats.com. Je zou denken dat ze cats.html zou hebben. Maar ok. Dus dit is een soort van de conventionele menselijke interactie we hebben nu gehad met cats.com. Hoe werkt dat vertalen? Dit zou iets bekend voorkomen. Ons verzoek zag er precies hetzelfde, behalve in plaats van het krijgen van slash we nu krijgen cats.html. Dus wat nu eigenlijk deze hele verzoek is te zeggen is geef me www.cats.com/cats.html. Dus de gastheer en de middelste deel van die top line er precies aan te geven welke pagina ik vraag. Cats.com maar in dit geval is niet van plan kunnen positief te reageren. Ze weten niet waar we het over. En dus dit is iets wat je zou kunnen hebben gezien before-- HTTP 1.1 404 Not Found. Ik kon niet wat vinden je vraagt. By the way, ik ga u terug wat HTML, en meestal die HTML is de inhoud van een aantal 404 pagina. En in het geval van cats.com, is het waarschijnlijk sommige leuke katten in een mand met een droevig gezicht 404 naast hen, want je gaat worden triest als je niet pagina te krijgen die je zocht. Dat is een soort van de basis van wat een protocol, het HTTP-protocol aanvragen lijkt op. Ze zijn echt vergelijkbaar met hoe we zou een vergelijkbare interactie maken in slechts menselijke conventies vragen voor iets en het krijgen van het weer of het schrijven van een brief en verwacht een reactie letter in een bepaald formaat. Dat is vrij veel wat HTTP is gewoon canonicalizing voor alle apparaten die toegang wilt webpagina's, hypertext transfer. Dus een lijn van het formulier, dit de methode verzoek doel HTTP-versie, wordt een HTTP-aanvraag lijn genaamd. Het is meestal het eerste ding dat is uitgezonden als deel van een HTTP verzoek of als je vraagt ​​voor HTTP. Het is een soort van willen, zoals ik al zei, zeggende lieve, blanco bovenaan uw brief. Ze weten dat je bent schrijft ze een brief. Dus dit is zeer vergelijkbaar te zeggen, ik weet dat ze het maken van een HTTP-verzoek en dit is bepaald formaat ze vragen voor. HTTP versie is waarschijnlijk altijd gaat om HTTP / 01/01 zijn. 1,0 bestaat ook, maar is niet echt meer gebruikt. Voor de toepassing van CS50, GET is waarschijnlijk altijd wat je gaat worden gebruik wanneer u daadwerkelijk bent waardoor directe HTTP-aanvragen. Maar POST is een andere optie die we niet gaan praten over nu. En dan vraag-target is welke pagina op de server van de gastheer je zou willen krijgen. Zoals ik al zei, dat de hostnaam is een aparte lijn, meestal de tweede regel van de totale aanvraag. En zo samen genomen, de gastheer de naam en het verzoek doel geef een specifieke resource wordt gezocht. In onze 404 bijvoorbeeld een tweede geleden, ik werd opnieuw vragen om www.cats.com, cats.com zijnde de gastheer. En in mijn verzoek lijn, Ik zei /cats.html. Dat was mijn verzoek doel. Dus over het algemeen was ik vragen voor de inhoud of de bron gelegen bij www.cats.com/cats.html. En vervolgens afhankelijk van of de bron bestaat en of de server kan leveren de middelen overeenkomstig de cliënt verzoek, misschien krijg je verschillende statuscodes terug. Sommige van deze status van codes die u hebt gezien omdat ze een deel van het antwoord. Sommigen van hen, 200 OK, zijn waarschijnlijk vrij stil. U hebt waarschijnlijk nog nooit gezien een pagina reageren 200 OK. U krijgt alleen de pagina. Het is niet zoals een 404-fout, die meestal vrij duidelijk. Je ziet meestal dat het zegt 404. Dus laten we praten over wat sommige van de status van codes kan zijn. Ook wanneer de server reageert op ons, ze zijn gaat HTTP-versie staat te reageren. Meestal HTTP / 1.1. Wat zijn deze statuscodes gaat worden? Nou, misschien krijgen we een succes. Dus in de categorie succes, we misschien code 200 krijgen met de tekst OK. Wat betekent dit? Nou ja, alles is goed. U heeft een geldige aanvraag. Hier is een geldig antwoord. Ik was in staat om te leveren precies wat je wilde. Soms kun je andere dingen dat je niet meteen zal merken maar zijn enigszins mislukkingen. Ze zijn genoemd omleidingen. Er zijn twee voorkomende hier. 301 Moved Permanently-- wat dit betekent in feite is de pagina is nu op een nieuwe locatie. Het zal er voor eeuwig leven. En de meeste browsers automatisch doorverwijzen. Zodat je nooit echt zien een 301, ofwel, tenzij je met behulp van een echt out-of-date browser, eventueel, omdat de respons 301 is onderdeel van de stip, punt, punt van de 301 respons. Het vertelt je ook waar de nieuwe pagina is. En dus de meeste browsers gewoon redirect je daar, ervan uitgaande dat u wilt er naartoe te gaan. Soms krijg je ook 302 gevonden. En degene die je eigenlijk misschien nog steeds af en toe zien. Soms pagina's te verplaatsen tijdelijk. Dus het is niet van plan om te worden ingebouwd in het verzoek vertelt de browser te allen tijde permanent te wijzigen hij ziet het verzoek dat u maken om het te veranderen naar iets anders. Dus je zou kunnen zien 302 Gevonden, die in feite zegt deze pagina woont ergens anders. Maar het is niet van plan om Er wonen in eeuwigheid. Het zal uiteindelijk waarschijnlijk gaan terug naar waar je denkt dat het is. Dan zul je dingen als opdrachtgever fouten. Dus dit zijn degenen die je hebt waarschijnlijk gezien, nu. Je hebt waarschijnlijk nog niet gezien de 200s of 300s, maar je bent waarschijnlijk vertrouwd met de 400s. En dat is wat we praten over in een tweede, 500s ook. Je zou kunnen zien 401 Unauthorized. Meestal betekent dit dat u bent proberen om toegang te krijgen tot een pagina, maar je hebt niet ingelogd. Dus je probeert te gaan naar een profiel of iets op Facebook of u probeert toegang some-- je op het werk. Je probeert toegang te krijgen tot iets op internet van je werk, maar je bent niet ingelogd. Je kunt niet zien de pagina. Je zou kunnen krijgen een 401 onbevoegde, wat betekent dat we waarschijnlijk kan dit verzoek te voldoen zal zijn, maar eerst je nodig hebt om in te loggen om dit te doen. Omgekeerd zou je krijgt 403 Verboden, dat is het niet echt uit als je ingelogd bent of niet. Dit verzoek is niet toegestaan. De bron bestaat op de server. Maar u bent niet toegestaan ​​om toegang te krijgen. Dit is meestal interne bestanden live op de server om diverse redenen maar zijn niet bedoeld om toegankelijk vanuit de buitenwereld, en dus zijn ze verboden. Ze leven daar. Ik zeg niet dat ik kan het niet vinden. Maar ik zeg kan ik niet geven. En het maakt niet uit of je ingelogd bent of niet. En dan natuurlijk, de heel gebruikelijk 404 Not Found. Het bestand bestaat niet op de server. Ik zou graag willen bevredigen uw verzoek, maar ik kan het niet. Je soms ook zien server fouten, de meest algemeen zijnde 500 Internal Server Error, die niet je eigenlijk iets vertellen helemaal over wat er mis is gegaan. Maar het is niet echt je maakt een fout in uw verzoek. Het is eigenlijk de server falende te leveren op het verzoek een of andere manier. Dus 500 is de algemene reactie. U zult ook iets zien zoals Service niet beschikbaar, waarvan ik denk dat de code 503. En Gateway Timeout-- als je ooit een pagina had net zitten er laad- en laden en laden en je weet nooit wanneer het gaat om laden en dan uiteindelijk het gewoon says-- gewoon opgeeft. Dat is een 504 Gateway Timeout. De server wilde uw verzoek uit te voeren, maar ging er iets mis op de server side-- niet op uw side-- naar leiden dat een probleem. Nu kunnen we het verhaal eindigt hier, maar wat ik eigenlijk nu doen is dat ik ga openstellen mijn browser en je laten zien hoe je zou kunnen zien een aantal van deze statuscodes zelfs als je niet over het algemeen zien. En we gaan dat doen door het nemen van een kijken naar enkele developer tools. Oké Dus hier ben ik nu in mijn raam browser. En ik wil een beetje te leren meer over deze HTTP-verzoeken. Hoe kan ik weten-- zeker dat we weten of een pagina goes-- als er iets mis gaat, krijgen we een 404. We hebben allemaal gezien dat. We hoeven niet te illustreren dat. Maar wat zijn sommige anderen? En hoe zouden we zien deze verzoeken in actie? Dus eerste wat ik ga doen is het openstellen van Developer Tools. Dus Developer Tools worden gebouwd in de meeste moderne browsers en stellen ons in staat dingen te zien dat we niet anders see-- wat extra informatie soort onder onze web verzonden verzoeken. Ik gebruik Google Chrome hier. En Developer Tools openen in Chrome, je gewoon op F-12, en het gaat om te openen het op de zijkant. Zodra ik het verzoek te typen, zal ik in te zoomen zodat we kunnen zien wat er aan de hand hier. Maar wat ik ga doen in mijn browser bar is-- en ik zal inzoomen op hier-- Ik zal een verzoek naar www.google.com maken. We hebben allemaal waarschijnlijk gemaakt dit verzoek eerder. Ik ga druk op Enter. Nu, hier in mijn Developer Gereedschappen, heb ik gekozen voor het tabblad Netwerk. En je merkt een heleboel dingen hier. Kijk naar these-- 200 OK, 200 OK, sommige van deze statuscodes komen. Ik weet niet waarom ik krijg 302 Gevonden. Ik wist niet dat ik dat te zien. Maar in principe zien dat vrij veel, in termen van mijn Google request-- Ik maakte een zeer eenvoudige verzoek om Google's pagina. En in het proces van het leveren van mijn verzoek, Google heeft blijkbaar veel van andere verzoeken namens mij. Maar ik heb een get verzoek om Google's gemaakt pagina en ik krijg veel van 200 OKs. Ik ben niet het zien van 200 op OK mijn scherm, maar ik krijg veel verzoeken die zijn gedaan. Een meer dat ik ben er vrij dat gaat werken is-- voor degenen onder u die zijn echt oud-school, u wellicht weet dat Facebook was niet altijd op Facebook.com. In zijn vroege dagen was bij wwww.thefacebook.com. Ze konden blijkbaar geen toegang krijgen om Facebook.com voor heel even. En dus wat ik verwacht hier is om informatie te krijgen. En we zullen zien of dit uitpakt. Wat ik hier verwacht is om informatie te krijgen dat Facebook permanent is verplaatst van thefacebook.com aan Facebook.com. Dus ik ben ergens verwacht in de buurt van de top van mijn verzoeken meer dan in mijn Developer Tools een melding 301 krijgt dat Facebook permanent is verplaatst. Nogmaals, ik zal niet te zien 301 Op het scherm van mijn browser. En omdat het een 301, het is een permanente verhuizing. Mijn browser, is dat Het is een moderne browser is waarschijnlijk gaan om te buigen ik Facebook.com toch. Maar laten we eens kijken wat er gebeurt. En nu ga ik ga naar thefacebook.com. En yep, daar is het recht op de top. Het ging weg, maar het was er. Laat me bladeren hier. Hier bij de top. Ik maakte een verzoek thefacebook.com, en ik krijg een reactie dat deze pagina permanent is verplaatst. En dan 307 is hier een interne redirect. En dus dit is wat er daadwerkelijk heeft verhuisden me naar de veel meer vertrouwd www.facebook.com. Dus deze response codes doen nog steeds gebeuren, zelfs als we ze niet zien. dat ga ik niet doen illustreren 401, 403, 404, omdat je waarschijnlijk hebt gezien die op verschillende punten. En 500, zou ik gewoon soort van-- zouden we geluk Als kreeg een 500, omdat we niet weten wat servers zijn momenteel overal neer. Maar deze codes te doen bestaan, en er is een manier om ze te openen, zelfs als we dat niet doen ze zien uit de eerste hand op onze systemen. Ik ben Doug Lloyd. Dit is CS50.