← Område 1 Referens · Klient och server Statuskoder

Webbserverprogrammering 1 · område 1 · lektion 2

Klient och server: vad händer vid en förfrågan

Sidan du behöver när du skriver inlämningen. Här står det som gicks igenom på lektionen, i den form du kan slå upp: adressens delar, statuskoderna och skillnaden mellan en fil som skickas och en sida som byggs.

Missade du lektionen?

Passet var en genomgång utan eget kodande. Allt som sades finns här. Räkna med en och en halv timme:

  1. Läs avsnitt 1 till 5 i ordning. De bygger på varandra.
  2. Öppna nätverksfliken med F12 på en riktig sajt och läs en förfrågan och dess svar rad för rad, som avsnitt 3 visar. Det gjorde klassen tillsammans i tjugo minuter, och det går inte att ersätta med att läsa om det.
  3. Framkalla en 404 själv: lägg till skräp sist i en adress och ladda om. Raden i nätverksfliken blir röd.
  4. Läs igenom uppgiften. Den delades ut på det här passet.

Uppgiften kräver en egen exempeladress med både frågesträng och fragment. Börja leta redan nu — det tar längre tid än man tror.

1. Adressens fem delar

En webbadress är inte en sträng utan fem delar, och varje del har ett jobb.

DelI exempletVad den gör
Protokollhttps:// Hur samtalet ska föras. s betyder krypterat — utan det kan vem som helst på nätverket läsa allt som skickas.
Domännamnwww.scb.se Vilken server som ska svara.
Sökväg/hitta-statistik/ Vad på den servern du frågar efter.
Frågesträng?fraga=befolkning Extra värden till servern. Börjar med ? och flera delas med &.
Fragment#resultat Var på sidan webbläsaren ska hoppa.
Fragmentet skickas aldrig till servern

Allt efter # stannar i webbläsaren. Servern får bara sökvägen och frågesträngen. Du kan se det själv: öppna nätverksfliken, ladda om en sida med fragment i adressen och titta på vad förfrågan faktiskt innehåller.

Till inlämningen

Du ska använda en egen exempeladress som har både frågesträng och fragment, och förklara varje del. Hittar du ingen: sök på något på en sajt du använder, så får du en frågesträng.

2. DNS

Datorn kan inte skicka något till ett namn — den behöver en IP-adress. DNS är översättningen från det ena till det andra. Prova själv i terminalen:

SystemKommando
De flestanslookup www.scb.se
PowerShell, om nslookup saknasResolve-DnsName www.scb.se

Svaret sparas en stund på din dator. Därför är första besöket på en ny domän långsammare än nästa.

3. Förfrågan och svar

HTTP är text. Det är hela hemligheten — du skulle kunna skriva det för hand.

Så här ser en förfrågan ut:

RadVad den betyder
GET /hitta-statistik/ HTTP/1.1 Metoden först. GET betyder ge mig, POST betyder här kommer data.
Host: www.scb.se Vilken sajt som avses. Många sajter kan ligga på samma IP-adress.
Accept: text/html Vad webbläsaren helst vill ha tillbaka.
User-Agent: Mozilla/5.0 Vilken webbläsare som frågar.

Och så här ser svaret ut:

RadVad den betyder
HTTP/1.1 200 OK Statuskoden. Hur det gick.
Content-Type: text/html; charset=utf-8 Vad innehållet är, och vilken teckenkodning det använder.
Prova själv

Öppna DevTools med F12, gå till fliken Network och ladda om sidan. Klicka på det första anropet. Räkna sedan raderna i listan — en sida är sällan ett anrop. Det är ett för HTML:en, och sedan ett till för varje bild, stilmall och skript.

4. Statuskoder

Tre siffror i svaret som säger hur det gick. Första siffran avgör sorten. Sök i tabellen, eller läs den rakt igenom.

12 rader

KodNamnVad den betyder
2xxLyckadesServern gjorde det du bad om.
200OKHär är det du bad om. Den vanligaste koden på webben.
201CreatedNågot nytt skapades, till exempel efter en POST. Kommer i område 6.
3xxOmdirigeringDet du sökte finns någon annanstans.
301Moved PermanentlyHar flyttat för gott. Webbläsaren kommer ihåg det.
302FoundLigger tillfälligt någon annanstans. Fråga här igen nästa gång.
4xxFel av den som frågarFörfrågan var något fel på.
400Bad RequestServern förstod inte förfrågan.
403ForbiddenDu får inte se det här, även om det finns.
404Not FoundIngenting hittades på den sökvägen.
5xxServerfelServern misslyckades. Som utvecklare är det ditt fel.
500Internal Server ErrorServerfel: koden kraschade under körningen.
Prova själv

Lägg till skräp sist i adressen till en sajt och ladda om med nätverksfliken öppen. Raden blir röd och statuskoden står i listan.

Till inlämningen

Du ska förklara minst fyra statuskoder, varav minst två som inte finns i guiden. Tabellen ovan räcker för att välja — men skriv förklaringen med egna ord och ta med vad koden betyder för besökaren.

5. Statiskt och dynamiskt

Skillnaden hela kursen står på.

StatisktDynamiskt
Vad du frågar efterom-oss.html/mina-sidor
Vad servern görLäser filen från disk och skickar denKör kod, hämtar data, bygger HTML och skickar
Finns sidan innan?Ja, som en filNej. Den uppstod i samma stund
Ser alla samma sak?Ja, samma fil varje gångNej, innehållet kan skilja per besökare och tillfälle

Webbläsaren märker ingen skillnad. Den får HTML i båda fallen — jobbet gjordes på servern, och det syns inte i sidkällan att något räknades ut.

Till inlämningen

Minst en av dina sidor ska skapa sitt innehåll på servern vid varje förfrågan, så att det ändras när du laddar om. Ett klockslag du skrivit in för hand är inte ett bevis — ladda om fem gånger och kontrollera att värdet faktiskt ändras.

6. Andra språk gör samma jobb

C# är inte det enda sättet. Poängen är inte att välja rätt, utan att veta att valet finns — och att det du lär dig går att flytta med sig.

SpråkVar det användsKaraktär
PHPWordPress och en stor del av webbenLåg tröskel, väldigt spritt
Node.jsStartups, API:erSamma språk som i webbläsaren
PythonDjango, Flask, mycket data och AILäsbar syntax
JavaBank och stora systemStort och stabilt
C# / .NETOffentlig sektor, industri, spelKompilerat, typat, stort ramverk

Kursen använder C# och Blazor för att kompilatorn hittar felen innan koden körs, verktygen är bra, och samma språk bär hela vägen från sida till databas.

7. Orden

Orden från det här passet. De används i uppgiften utan förklaring.

Ordträning

OrdBetyder
klientDen som frågar. Oftast webbläsaren.
serverDen som svarar. Programmet som lyssnar och skickar tillbaka en sida.
HTTPReglerna för hur frågan och svaret ska se ut. Ren text.
HTTPSSamma sak, men krypterat så att ingen på vägen kan läsa med.
requestFörfrågan från klienten till servern.
responseServerns svar: statuskod, headers och innehåll.
headerRad med extra information i en förfrågan eller ett svar.
GETMetoden som betyder ge mig det här.
POSTMetoden som betyder här kommer data att ta emot.
statuskodTresiffrigt tal i svaret som säger hur det gick.
DNSÖversättningen från domännamn till IP-adress.
IP-adressNumret som pekar ut en dator på nätet.
frågesträngDelen av adressen efter ?. Extra värden till servern.
fragmentDelen efter #. Stannar i webbläsaren, skickas aldrig.
teckenkodningHur bokstäver blir till bytes. utf-8 är den som klarar åäö.
statisk sidaEn färdig fil som skickas som den är.
dynamisk sidaEn sida som byggs av kod i samma stund som någon frågar.