- Leren
- Informatica & ICT
- Programmeren
- HTML en CSS: responsieve, toegankelijke websites bouwen
- Browsers, servers en HTTP
Hoe het web werkt: browsers, servers en HTTP
BeginnerLes 1 van 8 in Cursus HTML en CSS: responsieve, toegankelijke websites bouwen
Wat je leert
- Leg de rollen van clients en servers uit en volg de belangrijkste stappen van het intypen van een webadres tot het verschijnen van een voltooide pagina, inclusief wat er bij elke stap mis kan gaan.
- Leg clients, servers en de verzoek-antwoordcyclus uitBeschrijf wat clients en servers zijn, hoe een browser bestanden bij een server opvraagt en waarom voor één pagina meestal veel verzoeken nodig zijn.
- Volg de stappen van de adresbalk tot de voltooide paginaZet de belangrijkste stappen op volgorde (het adres lezen, de server vinden, het verzoek verzenden, het antwoord ontvangen en de pagina opbouwen) en geef aan wat er bij elke stap mis kan gaan.
- Leg clients, servers en de verzoek-antwoordcyclus uit
- Ontleed een webadres, leg uit wat elk onderdeel de browser en de server vertelt, lees domeinnamen correct en maak werkende links tussen de bestanden van een website.
- Benoem de onderdelen van een URLHerken het URL-schema, de host, de poort, het pad, de querystring en het fragment van een webadres en leg uit wat elk onderdeel doet.
- Lees domeinnamen en leg uit hoe ze naar een server leidenSplits een domeinnaam in labels, geef aan wie een domein beheert en beschrijf hoe een naam wordt geregistreerd en aan het adres van een server wordt gekoppeld.
- Maak absolute en relatieve links tussen bestandenKies tussen absolute, relatieve en vanaf de hoofdmap opgebouwde adressen, bepaal waar een relatieve link naartoe leidt en geef bestanden namen waarmee links op een server blijven werken.
- Benoem de onderdelen van een URL
- Beschrijf wat een browser naar een server stuurt en wat er terugkomt, en gebruik statuscodes om te bepalen of een verzoek is gelukt en zo niet, waar het probleem ligt.
- Beschrijf wat een HTTP-verzoek bevatLees de onderdelen van een HTTP-verzoek, kies tussen GET en POST en leg uit wat de veelvoorkomende verzoekheaders de server vertellen.
- Beschrijf wat een HTTP-antwoord bevatLees de statusregel, headers en berichtinhoud van een antwoord, leg mediatypen uit en beschrijf hoe cookies en caching werken bij een toestandsloos protocol.
- Interpreteer statuscodes en achterhaal waarom verzoeken mislukkenDeel statuscodes in hun vijf klassen in, leg de codes uit die je het vaakst tegenkomt en gebruik ze om te bepalen of een probleem bij het verzoek, de server of geen van beide ligt.
- Beschrijf wat een HTTP-verzoek bevat
- Geef aan wat elk van de drie talen van het web doet, hoe ze op één pagina samenhangen en hoe de browser de ontvangen bestanden omzet in een pagina die je kunt zien en gebruiken.
- Maak onderscheid tussen structuur, vormgeving en gedragHerken HTML-, CSS- en JavaScript-code, leg de taak van elk uit en laat zien hoe een pagina ze met elkaar verbindt.
- Leg uit hoe de browser een pagina uit de bijbehorende bestanden opbouwtBeschrijf hoe de browser HTML omzet in de DOM, CSS toepast, scripts uitvoert en de pagina tekent, en leg uit waarom de paginabron en de actuele pagina kunnen verschillen.
- Maak onderscheid tussen structuur, vormgeving en gedrag
- Maak een code-editor en projectmap klaar, bekijk pagina's lokaal en gebruik de ontwikkelaarstools van de browser om elementen en stijlen te inspecteren, fouten te lezen en elk verzoek van een pagina te volgen.
- Stel een code-editor in en maak een projectmapInstalleer en configureer een code-editor, orden de bestanden van een website in een projectmap en bekijk pagina's vanaf de schijf of via een lokale server.
- Inspecteer elementen, stijlen en fouten met ontwikkelaarstoolsOpen de ontwikkelaarstools, inspecteer en bewerk tijdelijk HTML en CSS, lees consolefouten en bekijk een pagina op telefoonbreedte.
- Volg elk verzoek in het netwerkpaneelLeg het laden van een pagina vast, lees de status, het type, de grootte en de headers van elk verzoek en gebruik het paneel om niet-werkende links, omleidingen en effecten van caching te vinden.
- Stel een code-editor in en maak een projectmap
Browsers, servers en HTTP: uitleg
1Van je browser naar een webserver
Als je een pagina opent, begint een gesprek tussen je browser en één of meer servers. Volg dat gesprek vanaf het eerste adres tot de bestanden die je scherm vullen. Door de stappen afzonderlijk te bekijken, kun je uitleggen waarom tekst vóór afbeeldingen kan verschijnen, waarom een tweede bezoek sneller kan laden en waarom een ontbrekend bestand een ander soort fout oplevert dan een onbereikbare server.
1.1 Clients, servers en afzonderlijke bronnen
Een webpagina op je scherm is het resultaat van werk op twee plaatsen. Je browser vraagt bronnen op en een server stuurt antwoorden. Die rollen verklaren zowel een eenvoudige persoonlijke website als een pagina die uit verschillende diensten is samengesteld.
Wie vraagt en wie antwoordt
Een client is een apparaat en programma dat iets opvraagt. Chrome, Edge, Firefox en Safari zijn browserclients. Een server is een computer met software die verzoeken aanneemt en opgeslagen bestanden of zelf samengestelde inhoud terugstuurt. Apache en nginx zijn voorbeelden van webserversoftware. Het woord “server” kan de computer of die software aanduiden.
Bij een HTTP-uitwisseling stuurt de client een verzoek waarin staat wat hij wil. De server stuurt een antwoord op dat verzoek. Vergelijk het met eten bestellen aan een toonbank: het bestelbonnetje vraagt om iets en het dienblad is het antwoord. De browser begint de uitwisseling; een gewoon pagina-antwoord reageert op een verzoek.
Client en server zijn rollen, geen vaste soorten machines. Een laptop kan zowel je browser als een testserver uitvoeren. Een website wordt gehost als een bereikbare server de bronnen beschikbaar maakt. Een server die je via localhost bereikt, draait op je eigen computer; dat adres brengt de browser van iemand anders niet naar jouw laptop.
Een pagina is een verzameling bronnen
Een bron is iets wat een adres kan aanduiden: een pagina, stijlblad, script, afbeelding, lettertype, video of stukje gegevens. Het eerste paginaverzoek haalt meestal HTML op. De browser leest die HTML om de andere benodigde bronnen te ontdekken en vraagt ze elk afzonderlijk op.
Een artikel noemt bijvoorbeeld twee stijlbladen, één script en vijf afbeeldingen. Tel ook de HTML mee:
- Eén HTML-bron vormt het begin van de pagina.
- Twee CSS-bronnen leveren de stijlen.
- Eén JavaScript-bron levert gedrag.
- Vijf afbeeldingsbronnen leveren afbeeldingen.
Dat zijn negen bronnen en, bij een lege browsercache, negen HTTP-verzoeken voor die bronnen. Een cache bewaart gedownloade kopieën voor hergebruik. Nog geldige bestanden in de cache kunnen bij een volgend bezoek het aantal verzoeken over het netwerk verminderen.
De bronnen hoeven niet op dezelfde server te staan. De HTML kan van www.example.com komen, afbeeldingen van images.example.net en een video van een andere dienst. Het adres van elke bron vertelt de browser waar hij die moet opvragen. Een geslaagd HTML-verzoek bewijst dus niet dat ook elke afbeelding of elk script is geladen.
Opgeslagen bestanden en gegenereerde antwoorden
| Soort antwoord | Hoe de server het voorbereidt | Voorbeeld |
|---|---|---|
| Statisch | Verstuurt een opgeslagen bestand zoals het is | Een pagina about.html |
| Dynamisch | Voert een programma uit om het antwoord samen te stellen | Zoekresultaten voor een bepaalde zoekopdracht |
In beide gevallen ontvangt de browser bronnen die hij kan lezen of weergeven. Een gegenereerde HTML-pagina is nog steeds HTML wanneer die de browser bereikt. De browser bevat gedownloade kopieën, terwijl de server de oorspronkelijke bestanden van de website bewaart of het programma dat ze samenstelt.
Het web werkt via het internet
Het internet is het wereldwijde netwerk dat gegevens tussen computers transporteert. Het web is een dienst die dat netwerk gebruikt: gekoppelde bronnen die via URL's worden aangeduid en via HTTP worden uitgewisseld. Ook e-mail, onlinegames en videobellen gebruiken het internet. Het web is één toepassing van het netwerk, niet de naam voor elke activiteit erop.
Belangrijkste punten
- Een HTTP-uitwisseling begint met een verzoek van een client, waarop een server antwoordt.
- Een pagina heeft meestal voor elke bron een apart verzoek nodig, tenzij een bruikbare kopie in de cache beschikbaar is.
- Client en server beschrijven rollen; één computer kan beide vervullen.
- Statische bestanden zijn opgeslagen antwoorden; dynamische antwoorden worden door serverprogramma's samengesteld.
- Het web is een dienst die via het internet werkt.
1.2 De stappen bij het laden van een pagina
Als je bij een webadres op Enter drukt, beginnen verschillende taken. Elke taak heeft een eigen doel, dus een fout in de ene fase laat andere aanwijzingen achter dan een fout in een andere fase.
Lees het adres en vind de server
Neem https://www.example.com/news.html. De browser leest https als het schema, www.example.com als de host en /news.html als het opgevraagde pad. Tekst zoals “weer morgen” wordt normaal gesproken als zoekopdracht behandeld en naar de standaardzoekmachine gestuurd.
De browser heeft een IP-adres nodig, een numeriek netwerkadres zoals 203.0.113.10 of het IPv6-voorbeeld 2001:db8::1. DNS, het Domain Name System, vindt adressen die bij domeinnamen horen. De browser en het besturingssysteem kunnen een recent DNS-antwoord uit een cache hergebruiken, zodat niet voor elk paginabezoek een nieuwe opzoeking nodig is.
Maak verbinding en beveilig de uitwisseling
De browser maakt verbinding met de server. Voor HTTPS stelt hij een versleutelde verbinding in met TLS. De server biedt een certificaat aan waarmee de browser zijn identiteit voor het gevraagde domein kan controleren. Versleuteling beschermt de berichten tegen lezen of wijzigen door anderen op het netwerk. Een indicator voor een beveiligde verbinding geeft die bescherming aan; ook een oplichtingssite kan een geldig certificaat hebben.
Gegevens reizen over het netwerk in kleine stukken die pakketten heten, via apparaten die routers worden genoemd, en worden op de bestemming weer samengevoegd. De browser en het besturingssysteem regelen dat transport, terwijl de browser met de HTTP-berichten werkt.
Verzoek, ontvangst en opbouw
- De browser stuurt een HTTP-verzoek voor
/news.html. - De server antwoordt met een statuscode, headers die het antwoord beschrijven en meestal berichtinhoud met de HTML.
- De browser leest de HTML en vraagt de genoemde stijlbladen, scripts, afbeeldingen en andere bronnen op.
- Hij bouwt de pagina op, past stijlen toe, voert scripts uit en tekent inhoud op het scherm.
Verschillende verzoeken om bronnen kunnen elkaar overlappen. De browser kan tekst tonen voordat elke afbeelding is gedownload; de pagina wordt geleidelijk opgebouwd.
Stel dat de HTML van een kleine pagina op https://example.org/ alleen style.css en logo.png noemt, beide op dezelfde host. Zonder relevante vermeldingen in de cache heeft één host een DNS-opzoeking nodig en zijn voor de drie bronnen drie HTTP-verzoeken nodig. Bij een later bezoek voorkomt een DNS-antwoord in de cache die opzoeking. Nog geldige kopieën van bronnen kunnen opnieuw worden gebruikt en oudere kopieën kunnen bij de server worden gecontroleerd. Een antwoord 304 Not Modified betekent dat een opgeslagen kopie nog actueel is en dat de inhoud van het bestand niet opnieuw hoeft te worden verstuurd.
Zoek een fout aan de hand van aanwijzingen
| Aanwijzing | Te onderzoeken fase |
|---|---|
| Naam kan niet worden omgezet | DNS kon geen adres vinden |
| Verbinding loopt af | De server kon niet op tijd worden bereikt |
HTTP-antwoord 404 | Een server antwoordde, maar vond de gevraagde bron niet |
| Tekst verschijnt zonder opmaak | Controleer het afzonderlijke verzoek om het stijlblad |
Een DNS-fout heeft geen HTTP-statuscode omdat er geen HTTP-antwoord is aangekomen. Een 404 is anders: de server heeft geantwoord. Chrome kan een naamfout zoals DNS_PROBE_FINISHED_NXDOMAIN tonen, maar de tekst is een browsermelding, geen antwoord van de server.
Belangrijkste punten
- De hoofdvolgorde is: URL lezen, adres vinden, verbinden, verzoeken, ontvangen en opbouwen.
- DNS koppelt namen aan adressen; HTTPS beschermt de HTTP-uitwisseling met TLS.
- De browser kan inhoud weergeven terwijl andere bronnen nog laden.
- Een DNS- of verbindingsfout kan optreden voordat er een HTTP-antwoord bestaat.
2Lees adressen en maak werkende links
Een webadres vertelt de browser zowel waarmee hij verbinding moet maken als wat hij moet opvragen. Leer de onderdelen te onderscheiden, domeinnamen vanaf rechts te lezen en links door mappen te volgen. Met deze vaardigheden herken je een misleidende hostnaam en herstel je een ontbrekende afbeelding of een ontbrekend stijlblad. Dezelfde padregels gelden wanneer je lokaal een kleine website bouwt en wanneer de map via een webserver wordt aangeboden.
2.1 Wat elk onderdeel van een URL doet
Een URL, of Uniform Resource Locator, duidt één bron aan. De domeinnaam is maar één onderdeel van dat adres. Het volledige patroon is scheme://host:port/path?query#fragment, al laten veel adressen optionele onderdelen weg.
Ontleed een adres
Lees dit adres in onderdelen:
https://shop.example.com:8443/products/shoes.html?color=blue&size=42#reviews
| Onderdeel | Waarde | Taak |
|---|---|---|
| Schema | https | Kiest versleuteld HTTP |
| Host | shop.example.com | Duidt de serverbestemming aan |
| Poort | 8443 | Selecteert een dienst op die bestemming |
| Pad | /products/shoes.html | Duidt de op te vragen bron aan |
| Query | color=blue&size=42 | Levert extra invoer |
| Fragment | reviews | Duidt een plaats binnen de pagina aan |
De leestekens scheiden de onderdelen: : volgt op het schema, ? begint de query en # begint het fragment. De scheidingstekens maken geen deel uit van de waarden van de query of het fragment.
Schema, host en poort
Het URL-schema bepaalt hoe het adres wordt behandeld. http gebruikt onversleuteld HTTP; https gebruikt versleuteld HTTP. mailto:info@example.com vraagt een e-mailprogramma om een bericht op te stellen, terwijl file:/// naar een lokaal bestand verwijst.
De poort selecteert een dienst op de host. Als die wordt weggelaten, gebruikt HTTP poort 80 en HTTPS poort 443. Zo duiden https://example.com/ en https://example.com:443/ dezelfde bestemming en hetzelfde pad aan. Lokale testservers gebruiken vaak poorten 3000, 5500 of 8080; http://localhost:5500/ vermeldt de poort omdat die niet de standaardpoort van HTTP is.
Bij het schema en de host maken hoofdletters geen verschil. De host www.example.com is een andere naam dan example.com; beide bereiken een website alleen als de eigenaar ze zo heeft ingesteld.
Pad, query en fragment
Op een eenvoudige statische website volgt een pad de mappen en bestanden van de server. Op andere websites bepaalt serversoftware wat een pad oplevert, dus hoeft een pad geen bestand op de schijf aan te duiden. Een mapadres dat eindigt op / levert vaak een standaardpagina zoals index.html op.
Een querystring voert invoer mee na ?. In /search?q=web+basics&page=2 scheidt & twee velden: de zoekwoorden en het paginanummer. Deze velden gaan als onderdeel van het verzoekdoel naar de server.
Een fragment blijft in de browser. Het achtervoegsel #reviews scrolt meestal naar een element met id="reviews". De browser vraagt het pad en de query zonder het fragment op. Als je alleen #top in #reviews verandert, vraagt de browser de server niet om een ander bestand.
Behoud de precieze tekens
Webpaden gebruiken schuine strepen /. Een spatie kan als %20 worden procentgecodeerd. Formuliercodering gebruikt + voor een spatie en %40 voor @; een gewoon URL-pad of een gewone query mag een letterlijke @ bevatten. Formuliercodering en de algemene schrijfwijze van URL's volgen dus niet precies dezelfde regels.
Paden kunnen hoofdlettergevoelig zijn, ook al zijn hosts dat niet. /Images/Logo.png kan verschillen van /images/logo.png. Als je de host correct overneemt maar de hoofdletters in een pad verandert, kun je dus nog steeds de verkeerde bron opvragen.
Belangrijkste punten
- Een URL scheidt de bestemming van het pad, de query-invoer en het browserfragment.
- De standaardpoorten zijn 80 voor HTTP en 443 voor HTTPS.
- De query bereikt de server; het fragment niet.
- Bij hosts maken hoofdletters geen verschil, maar bij paden kan dat wel zo zijn.
- Gebruik schuine strepen in webpaden en codeer spaties.
- Een adrespad kan door software worden afgehandeld zonder overeen te komen met een opgeslagen bestand.
2.2 Domeinnamen en wie ze beheert
Een domeinnaam geeft mensen een leesbare naam om in plaats van een numeriek IP-adres te gebruiken. De onderdelen tussen de punten laten ook zien hoe de naam is opgebouwd. Het is belangrijk die onderdelen correct te lezen wanneer twee adressen vergelijkbare woorden bevatten.
Begin aan de rechterkant
Elk onderdeel tussen punten is een label. In blog.example.org is het meest rechtse label, org, het topleveldomein, of TLD. Het geregistreerde domein is example.org en blog is een subdomein dat via dat domein wordt beheerd.
Generieke TLD's zijn onder meer .com, .org, .net, .dev en .shop. Landcode-TLD's hebben twee letters, zoals .nl, .de, .jp, .br en .ca. Voor sommige gelden toelatingseisen: .gov is beperkt tot geverifieerde Amerikaanse overheidsorganisaties. Voor nieuwe institutionele registraties onder .edu komen doorgaans daarvoor in aanmerking komende, institutioneel geaccrediteerde Amerikaanse instellingen voor vervolgonderwijs in aanmerking; sommige organisaties komen op grond van ander beleid in aanmerking en voor oudere registraties kunnen uitzonderingen gelden. ICANN coördineert de toplevelnamen van het domeinnaamsysteem.
Een geregistreerde naam bestaat niet altijd uit alleen de laatste twee labels. Onder .co.uk is de geregistreerde naam in news.example.co.uk bijvoorbeeld example.co.uk. Lees eerst de publieke uitgang en bepaal daarna welke naam daaronder is geregistreerd.
Bekende woorden kunnen in de naam van iemand anders staan
Vergelijk deze hosts:
| Host | Geregistreerd domein dat de host beheert |
|---|---|
accounts.example.com | example.com |
example.com.signin.example.net | example.net |
In de tweede host zijn de woorden example.com labels links van example.net. Ze geven de eigenaar van example.com geen zeggenschap over het adres. Bepaal eerst wat de host is voordat je die vanaf rechts leest; een bekende naam in een pad is evenmin de host.
www is een gewoon subdomeinlabel. Een website-eigenaar kan het gebruiken, weglaten of tussen namen omleiden. De aanwezigheid ervan is niet verplicht op het web.
Registratie en hosting staan los van elkaar
Een registrar verzorgt domeinregistraties voor klanten. Een registry beheert de registraties voor een TLD. Een domein registreren geeft je het recht die naam voor een bepaalde periode te gebruiken, meestal één of meer jaren. Je verlengt de registratie om dat recht te behouden; een verlopen naam kan uiteindelijk voor iemand anders beschikbaar komen.
De eigenaar stelt vervolgens DNS-records in om de naam aan het adres van een hostingserver te koppelen. Het domein is niet hetzelfde als de bestanden van de website. Dezelfde naam kan naar een andere server verwijzen en één server kan meerdere domeinen bedienen. DNS-antwoorden in de cache verklaren waarom het minuten of uren kan duren voordat een gewijzigd adres overal zichtbaar is.
Naamregels en lokale namen
Gewone hostlabels gebruiken letters, cijfers en koppeltekens, zonder koppelteken aan het begin of einde. Elk label mag maximaal 63 tekens hebben en een gewone volledige naam maximaal 253 tekens. Hoofdletters maken in namen geen verschil. Geïnternationaliseerde domeinnamen ondersteunen andere schrijfsystemen; hun gecodeerde ASCII-labels beginnen met xn--.
De speciale naam localhost betekent de computer die het verzoek doet. De loopbackadressen zijn onder meer 127.0.0.1 en ::1. Als een cursist http://localhost:3000/ opent, zoekt de browser naar een dienst op de eigen computer van die cursist.
Belangrijkste punten
- Lees domeinlabels van rechts naar links om het geregistreerde domein en de bijbehorende subdomeinen te herkennen.
- Een bekende naam links van een ander geregistreerd domein beheert die host niet.
- Registratie reserveert een naam voor een verlengbare periode; hosting maakt bronnen beschikbaar.
- DNS koppelt namen aan serveradressen en antwoorden in de cache kunnen zichtbare wijzigingen vertragen.
localhostverwijst naar de computer die het verzoek doet.
2.3 Paden die het juiste bestand bereiken
Een link kan een volledig adres bevatten of aanwijzingen om vanaf de huidige pagina een bron te vinden. Om te voorspellen waar de link naartoe gaat, begin je bij het adres van de pagina en volg je het pad onderdeel voor onderdeel.
Kies het beginpunt
| Soort link | Voorbeeld | Beginpunt |
|---|---|---|
| Absoluut | https://example.com/images/logo.png | Het genoemde schema en de genoemde host |
| Relatief | ../images/logo.png | De map van de huidige pagina |
| Vanaf de hoofdmap | /images/logo.png | De hoofdmap van de huidige website |
Een absolute URL duidt zijn eigen host aan en werkt vanaf elke pagina. Die is handig voor een andere website. Een relatieve URL laat het begin weg en wordt aangevuld op basis van het adres van de pagina. Voor bestanden binnen een website helpt dit om de map als geheel van een laptop naar een server te verplaatsen.
Werk een mappenboom door
Stel dat een website deze bestanden bevat:
my-site/
index.html
about.html
images/logo.png
styles/main.css
blog/first-post.html
Vanuit index.html blijft about.html in dezelfde map. images/logo.png gaat de submap images in en styles/main.css gaat styles in.
Vanuit blog/first-post.html is de beginmap blog. Gebruik ../images/logo.png om het logo te bereiken: ga eerst omhoog naar de websitemap en daarna images in. De link images/logo.png zou in plaats daarvan binnen blog/images zoeken, waar in deze boom geen logo staat. Gebruik ../index.html om vanuit dat bericht de startpagina te bereiken.
Volg adressen in geneste mappen
Op https://example.com/blog/2026/post.html:
photo.jpgwordthttps://example.com/blog/2026/photo.jpg.../index.htmlwordthttps://example.com/blog/index.html./about.htmlwordthttps://example.com/about.html.#commentsblijft op dit document en duidt het elementcommentsaan.
Een / aan het begin vervangt het huidige pad vanaf de hoofdmap van de website. Die betekent niet “één map omhoog”. Door ../ te herhalen ga je meerdere mapniveaus omhoog: ../../about.html gaat vanuit het geneste bericht omhoog door 2026 en blog voordat het about.html vindt.
Bekijk links in de juiste omgeving
Een pad vanaf de hoofdmap werkt met een HTTP-server, ook een lokale server. Op een file:///-pagina verwijst / naar de hoofdmap van het bestandssysteem van de computer, niet naar je projectmap. Gebruik een lokale server om dit soort links te testen.
Een pad zoals C:\Users\sam\site\logo.png of file:///Users/sam/site/logo.png duidt een locatie op één computer aan. Andere bezoekers hebben die map niet. Link met een webpad dat binnen de structuur van de website blijft.
Laat namen precies overeenkomen
Gebruik namen met kleine letters, koppeltekens in plaats van spaties en de juiste extensies: naar contact-form.html kun je gemakkelijker betrouwbaar linken dan naar Contact Form.HTML. Windows en macOS negeren vaak het verschil tussen hoofdletters en kleine letters in bestandsnamen, terwijl veel webservers dat onderscheid wel maken. Een lokale link naar Logo.png kan online mislukken als de werkelijke naam logo.png is.
Een startpagina met de naam index.html is een veelgebruikte serverstandaard. Als je een map zoals /blog/ opvraagt, wordt meestal de bijbehorende index.html aangeboden wanneer die server met deze standaard is ingesteld.
Belangrijkste punten
- Absolute links geven hun eigen bestemming; relatieve links beginnen in de map van de huidige pagina.
- Elke
../gaat één map omhoog, terwijl een/aan het begin bij de hoofdmap van de website begint. - Test links vanaf de hoofdmap via een webserver.
- Paden en bestandsnamen moeten overeenkomen, inclusief hoofdletters, kleine letters en extensies.
3Lees de berichten en achterhaal de oorzaak van fouten
Elk verzoek om een bron levert aanwijzingen op die je kunt onderzoeken: de methode en het adres die de browser verstuurde, de antwoordheaders en de statuscode. Lees deze onderdelen samen om een geslaagde download te onderscheiden van een omleiding, een hergebruikt bestand of een fout. Je ziet ook hoe cookies en caching nuttige functies toevoegen aan afzonderlijke HTTP-uitwisselingen en waarom het uiterlijk van een pagina alleen niet laat zien wat de server heeft teruggestuurd.
3.1 Een HTTP-verzoek van binnen
HTTP, het Hypertext Transfer Protocol, bepaalt hoe webclients bronnen opvragen en hoe servers antwoorden. HTTPS vervoert die berichten over een versleutelde verbinding. Als je een verzoek leest, zie je wat de browser de server heeft gevraagd te doen.
Lees het bericht op volgorde
Hier staat een verzoek in de tekstvorm van HTTP/1.1:
GET /products/shoes.html?color=blue HTTP/1.1
Host: shop.example.com
Accept: text/html
Accept-Language: en-US,en;q=0.9
De eerste regel bevat de methode, het verzoekdoel en de HTTP-versie. GET vraagt om een bron op te halen. Het verzoekdoel bevat het pad en de query, maar geen fragment. De host staat in de Host-header, waarmee één server onderscheid kan maken tussen de websites die hij bedient.
Een HTTP-header is een benoemd veld zoals Accept: text/html dat informatie over het verzoek of de inhoud ervan bevat. Een lege regel sluit de headers af. Sommige verzoeken bevatten daarna een berichtinhoud, de gegevens die worden verstuurd. Dit GET-voorbeeld heeft geen berichtinhoud.
HTTP/2 en HTTP/3 coderen berichten anders, maar behouden methoden, verzoekdoelen, headers en berichtinhoud. De ontwikkelaarstools tonen ze in leesbare vorm, zodat deze berichtonderdelen in verschillende versies bruikbaar blijven.
Kies een methode voor de handeling
| Methode | Beoogde handeling |
|---|---|
| GET | Een bron ophalen |
| POST | Gegevens ter verwerking indienen |
| HEAD | Antwoordheaders zonder berichtinhoud ophalen |
| PUT | Een bron vervangen |
| PATCH | Een deel van een bron wijzigen |
| DELETE | Een bron verwijderen |
Als je een gewone link volgt of een HTTP-adres intypt, ontstaat een GET-verzoek. Een HTML-formulier gebruikt standaard GET en POST wanneer het method="post" vermeldt.
Bij een GET-formulier komen velden in de query van de URL terecht. Dat past bij een zoekopdracht waarvan je de resultaten wilt bewaren als bladwijzer of wilt delen. POST plaatst ingediende velden in de berichtinhoud van het verzoek en past bij handelingen zoals een account aanmaken of een reactie plaatsen.
POST versleutelt op zichzelf niets. Bij gewoon HTTP kunnen zowel querygegevens als gegevens in de berichtinhoud tijdens het transport worden gelezen. HTTPS beschermt beide. Wachtwoorden horen in de berichtinhoud van een POST over HTTPS, omdat URL's ook in de browsergeschiedenis verschijnen en in logboeken kunnen worden opgeslagen.
Lees een formulierinzending
POST /signup HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
name=Ana+Silva&email=ana%40example.com
Het verzoekdoel is /signup. Content-Type geeft de formuliercodering van de berichtinhoud aan. De berichtinhoud bevat de naam “Ana Silva” en het e-mailadres “ana@example.com”: + wordt gedecodeerd als een spatie en %40 als @. Hier zijn dat 38 bytes, overeenkomstig Content-Length.
Verzoeken lezen, herhalen en herkennen
Een veilige methode is bedoeld om te lezen zonder de toestand van de server te veranderen; GET, HEAD en OPTIONS zijn veilig. Een idempotente methode heeft bij herhaling hetzelfde beoogde effect. Veilige methoden, PUT en DELETE zijn idempotent. Voor POST is dat niet gegarandeerd: het herhalen van een inzending kan een tweede reactie of bestelling aanmaken.
Andere verzoekheaders zijn onder meer User-Agent voor clientinformatie, Accept voor aanvaardbare formaten en Accept-Language voor taalvoorkeuren. Cookie stuurt opgeslagen cookiewaarden terug. Referer, met de historische spelling, kan de verwijzende pagina aanduiden; browsers kunnen die header afhankelijk van het beleid weglaten of beperken.
Belangrijkste punten
- Een verzoek vermeldt een methode en verzoekdoel, gevolgd door headers en soms berichtinhoud.
- GET haalt bronnen op; POST dient gegevens ter verwerking in.
- HTTPS beschermt berichten tijdens het transport; POST alleen biedt geen versleuteling.
- Een query reist mee in het verzoekdoel, terwijl formuliergegevens bij POST in de berichtinhoud reizen.
- Veilige methoden zijn bedoeld om te lezen; idempotente methoden hebben bij herhaling hetzelfde beoogde effect.
- HTTP-versies veranderen de codering zonder de belangrijkste berichtonderdelen weg te nemen.
3.2 Een HTTP-antwoord van binnen
Het antwoord is de reactie van de server op één verzoek. De code vertelt wat het resultaat is, de headers beschrijven het antwoord en de berichtinhoud bevat de teruggestuurde inhoud wanneer berichtinhoud is toegestaan.
Onderscheid de onderdelen
Een antwoord in de tekstvorm van HTTP/1.1 kan zo beginnen:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 1534
Cache-Control: max-age=600
<!DOCTYPE html>
<html lang="en">
...
De statusregel geeft de versie, code 200 en de voor mensen leesbare redenzin OK. Programma's gebruiken het getal. HTTP/2 en HTTP/3 sturen die redenzin niet mee. Na de headers en een lege regel begint de berichtinhoud met de HTML.
Content-Length geeft een aantal bytes aan, geen aantal tekens of zichtbare paginagrootte. Bij een antwoord met een afbeelding en Content-Length: 24576 heeft de berichtinhoud 24.576 bytes: 24,576 kB, of ongeveer 24,6 kB bij 1 kB = 1.000 bytes.
Herken de berichtinhoud aan het mediatype
Het mediatype, ook MIME-type genoemd, wordt in Content-Type meegestuurd.
| Mediatype | Gebruikelijke inhoud |
|---|---|
text/html | Een webpagina |
text/css | Een stijlblad |
text/javascript | Een script |
image/png, image/jpeg, image/svg+xml | Afbeeldingen |
application/json | Gestructureerde gegevens |
De header vertelt de browser hoe hij de berichtinhoud moet behandelen; een bestandsextensie alleen is niet genoeg. Als een URL voor een stijlblad een HTML-foutpagina met Content-Type: text/html teruggeeft, wijst de browser die als CSS af. Dit verklaart vaak een pagina met tekst maar zonder de bedoelde opmaak.
Berichtinhoud kan uit tekst of binaire bytes bestaan. Een antwoord op HEAD heeft geen berichtinhoud, ook niet als de headers de bron beschrijven die een GET zou teruggeven. Ook 204 No Content en 304 Not Modified hebben geen berichtinhoud.
Neem identiteit mee tussen afzonderlijke verzoeken
HTTP is toestandsloos: een uitwisseling onthoudt niet automatisch een eerdere uitwisseling. Een cookie levert informatie die verzoeken aan een lopende sessie koppelt.
- De server antwoordt met
Set-Cookie: session=abc123. - De browser slaat de cookie op.
- Bij latere verzoeken waarop de cookie van toepassing is, stuurt hij
Cookie: session=abc123mee. - De server kan die waarde gebruiken om de sessie op te zoeken, zoals de aanmelding of winkelwagen van de cursist.
Het toepassingsbereik van de cookie en de browserregels bepalen met welke verzoeken de cookie wordt meegestuurd.
Hergebruik inhoud zonder opnieuw te downloaden
Met Cache-Control: max-age=600 mag de browser een opgeslagen antwoord 600 seconden, ofwel 10 minuten, als nog geldig behandelen. In die periode kan hij de kopie hergebruiken zonder contact met de server op te nemen. Nadat de kopie is verlopen, kan de browser vragen of die is gewijzigd. Een 304 betekent dat de berichtinhoud in de cache opnieuw kan worden gebruikt; een 200 kan een vervangende versie leveren.
Als opgeslagen CSS-wijzigingen niet verschijnen, controleer dan of de browser een kopie heeft hergebruikt. Geforceerd opnieuw laden, meestal met Ctrl+Shift+R op Windows/Linux of Cmd+Shift+R op macOS, of de optie Cache uitschakelen in de ontwikkelaarstools helpt om nieuwe bronnen op te halen. Dat selectievakje geldt zolang de ontwikkelaarstools open zijn.
Andere nuttige antwoordheaders zijn onder meer Location voor de bestemming van een omleiding, Date voor de datum van het antwoord en Server voor informatie over de serversoftware, als die wordt meegestuurd.
Belangrijkste punten
- De status beschrijft het resultaat; headers beschrijven het antwoord; de berichtinhoud bevat de inhoud.
Content-Typegeeft het formaat van de berichtinhoud aan enContent-Lengthtelt bytes.- Antwoorden op HEAD en antwoorden met
204en304hebben geen berichtinhoud. Set-Cookieslaat een cookie op; latereCookie-headers sturen die terug bij verzoeken waarop de cookie van toepassing is.- Een nog geldig cacheantwoord kan worden hergebruikt;
304bevestigt dat opgeslagen berichtinhoud nog geldig is.
3.3 Statuscodes als aanwijzingen bij het opsporen van fouten
Een statuscode is het resultaat van drie cijfers in een HTTP-antwoord. Het getal beschrijft één verzoek, dus één pagina kan tegelijk geslaagde HTML, een ontbrekende afbeelding en een omgeleid script hebben.
Begin met het eerste cijfer
| Klasse | Betekenis |
|---|---|
| 1xx | Informatief, meestal een tussentijds bericht |
| 2xx | Succes |
| 3xx | Omleiding, inclusief validatie van de cache |
| 4xx | Het verzoek kan zoals verstuurd niet worden vervuld |
| 5xx | Een server kon het verzoek niet vervullen |
200 OK is het gebruikelijke antwoord op een geslaagde GET. 201 Created meldt dat een nieuwe bron is aangemaakt, vaak na POST. 204 No Content meldt succes zonder berichtinhoud in het antwoord.
Volg een omleiding zonder die met een fout te verwarren
301 Moved Permanently en 308 Permanent Redirect geven een nieuwe permanente locatie. 302 Found en 307 Temporary Redirect geven een tijdelijke locatie. De Location-header van het antwoord duidt het volgende adres aan.
Een verzoek aan http://example.com/ kan bijvoorbeeld 301 met Location: https://example.com/ teruggeven. De browser stuurt vervolgens een nieuw verzoek naar het HTTPS-adres, dat 200 teruggeeft. Dat zijn twee uitwisselingen, geen enkel antwoord met twee codes.
307 en 308 behouden de methode wanneer de browser het verzoek herhaalt. Na 301 of 302 mag een browser POST in GET veranderen. 304 Not Modified is een ander soort 3xx-resultaat: het bevestigt dat een kopie in de cache nog geldig is en stuurt geen vervangende berichtinhoud.
Koppel de code aan de volgende nuttige controle
| Code | Betekenis en volgende stap |
|---|---|
400 Bad Request | Controleer onjuist opgebouwde verzoekgegevens of syntaxis. |
401 Unauthorized | Zorg voor geldige authenticatie, bijvoorbeeld door in te loggen. |
403 Forbidden | De server weigert toegang; controleer de toestemming. |
404 Not Found | Controleer het exact opgevraagde pad en de bestandsnaam. |
405 Method Not Allowed | Controleer of het eindpunt die methode accepteert. |
429 Too Many Requests | Verlaag het tempo of wacht voordat je het opnieuw probeert. |
500 Internal Server Error | Er is een algemene fout opgetreden binnen de server. |
502 Bad Gateway | Een tussenliggende server ontving een ongeldig antwoord van een achterliggende server. |
503 Service Unavailable | De dienst is niet beschikbaar, vaak tijdelijk. |
504 Gateway Timeout | Een tussenliggende server ontving niet op tijd antwoord van een achterliggende server. |
Een 503 kan Retry-After bevatten om aan te geven wanneer je het opnieuw kunt proberen. Het verschil tussen 401 en 403 is bijzonder nuttig: ontbrekende of ongeldige authenticatie verschilt van geweigerde toestemming. Een 4xx-code wijst naar de kant van het verzoek voor onderzoek, maar een website kan nog steeds een niet-werkende link of een configuratieprobleem hebben dat de fout veroorzaakt.
Onderzoek de specifieke bron
Stel dat HTML en CSS 200 teruggeven, terwijl images/Logo.PNG 404 teruggeeft. Het werkelijke bestand op de server is images/logo.png. Door de hoofdletters en kleine letters in de link te corrigeren, verwijst die naar het opgeslagen bestand. Een server heeft het mislukte verzoek beantwoord; niet de hele website was onbereikbaar.
Bij een 5xx-antwoord zit de fout in de verwerking aan de serverzijde. Als je de website van iemand anders bekijkt, kun je het later opnieuw proberen of de fout melden. Een ontwikkelaar die verantwoordelijk is voor die server, onderzoekt de code of de achterliggende dienst.
Lees het antwoord, niet alleen het scherm
Een foutmelding in HTML bepaalt de status niet. Een website kan 200 teruggeven met een melding “niet gevonden”; dat heet een soft 404. Omgekeerd kan een echte 404 een verzorgde HTML-foutpagina bevatten. Gebruik het netwerkpaneel om de werkelijke code te lezen.
Als DNS of de verbinding faalt, bestaat er mogelijk helemaal geen HTTP-antwoord. Een door de browser gegenereerde fout heeft dan geen serverstatus om te inspecteren. Een afzonderlijke 404 voor /favicon.ico, het kleine tabbladpictogram dat browsers kunnen opvragen, laat de pagina-inhoud vaak gewoon werken.
Belangrijkste punten
- Het eerste cijfer deelt een antwoord in een klasse in; de volledige code geeft een specifieker resultaat.
- Omleidingen vermelden hun volgende locatie in
Location;307en308behouden de methode. 304betekent dat berichtinhoud uit de cache opnieuw wordt gebruikt, niet dat een nieuwe pagina op een ander adres wordt gedownload.- Controleer paden, authenticatie, toestemming en methoden bij de betreffende 4xx-antwoorden.
- 5xx-antwoorden duiden op een fout in de verwerking aan de serverzijde.
- De berichtinhoud en status van een foutpagina kunnen verschillende verhalen vertellen.
- Zonder HTTP-antwoord is er geen HTTP-statuscode.
4Hoe HTML, CSS en JavaScript samen een pagina vormen
De bestanden die een browser ontvangt, hebben verschillende taken. HTML geeft inhoud betekenis, CSS regelt het uiterlijk en JavaScript voegt gedrag toe. Volg hoe de browser ze combineert tot een actuele pagina en waarom een pagina er goed kan uitzien terwijl een knop niet werkt. Korte codevoorbeelden laten zien wat je in elke taal kunt herkennen en hoe het uitvoeringsmoment van een script een geladen bestand verbindt met de elementen die het nodig heeft.
4.1 Structuur, vormgeving en gedrag in afzonderlijke bestanden
Een pagina combineert inhoud, vormgeving en gedrag. Als je deze taken herkent, kun je kiezen welk bestand je moet inspecteren wanneer je iets wilt veranderen.
HTML beschrijft wat de inhoud is
HTML, HyperText Markup Language, geeft inhoud structuur en betekenis: koppen, alinea's, lijsten, links, afbeeldingen, tabellen en formulieren. Het is een opmaaktaal. HTML beschrijft elementen in plaats van berekeningen uit te voeren of lussen te doorlopen.
In <a href="about.html">About us</a> is de openingstag <a href="about.html">. Het attribuut href geeft de bestemming aan. “About us” is de inhoud en </a> sluit het element. Attributen horen binnen de openingstag.
Sommige elementen zijn lege elementen en hebben geen inhoud of sluitingstag. Zo levert <img src="logo.png" alt="Company logo"> een afbeeldingsadres en een tekstalternatief. <br>, <link> en <meta> zijn andere lege elementen.
Kies elementen om hun betekenis. Gebruik een kop omdat de tekst een sectie inleidt; gebruik CSS als je grotere tekst of extra tussenruimte wilt. Meerdere <br>-elementen zijn een slechte vervanging voor regels voor tussenruimte.
CSS regelt hoe inhoud eruitziet
CSS, Cascading Style Sheets, bepaalt kleur, lettertype, tussenruimte, lay-out en aanpassing aan verschillende schermbreedtes. Lees deze regel:
h1 {
color: navy;
font-size: 2rem;
}
De selector, h1, duidt de vorm te geven elementen aan. Elke declaratie koppelt een eigenschap aan een waarde. color: navy; stelt de eigenschap color in op navy. De dubbele punt scheidt eigenschap en waarde; de puntkomma sluit de declaratie af.
JavaScript reageert op handelingen
JavaScript is een programmeertaal. JavaScript reageert op klikken en typen, verandert de actuele pagina, controleert formulierinvoer en vraagt meer gegevens op zonder de hele pagina opnieuw te laden. Het is een andere taal dan Java.
Voor een themaknop kan een script de knop vinden, op klikken wachten en een CSS-klasse aan- of uitzetten:
document.querySelector("button").addEventListener("click", () => {
document.body.classList.toggle("dark");
});
Het script verandert of de body de klasse dark heeft; CSS bepaalt het uiterlijk van die klasse. Een statische informatiepagina kan met alleen HTML en CSS werken.
Verbind de bestanden in HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My first page</title>
<link rel="stylesheet" href="styles/main.css">
<script src="scripts/app.js" defer></script>
</head>
<body>
<h1>Hello, web</h1>
<p>This text is structured by HTML and styled by CSS.</p>
<button>Switch theme</button>
</body>
</html>
De <head> bevat informatie over de pagina en links naar bestanden. De <body> bevat de weergegeven inhoud. De browser vraagt styles/main.css en scripts/app.js afzonderlijk van de HTML op. Alle drie zijn plattetekstbestanden die je in een code-editor kunt openen.
Scheiding van verantwoordelijkheden houdt inhoud in HTML, uiterlijk in CSS en gedrag in JavaScript. Eén stijlblad kan veel pagina's vormgeven. Een betekenisvolle kop en een gewone link werken nog steeds als de opmaak of een script niet werkt, terwijl functies die van JavaScript afhankelijk zijn hun script nodig hebben om te werken.
Belangrijkste punten
- HTML geeft inhoud structuur en betekenis; attributen voegen informatie toe aan openingstags.
- CSS-selectors kiezen elementen en declaraties stellen eigenschapswaarden in.
- JavaScript voegt gedrag toe en kan de actuele pagina veranderen.
- HTML koppelt externe CSS- en JavaScript-bestanden, die elk als afzonderlijke bron worden geladen.
- Scheid inhoud, vormgeving en gedrag om wijzigingen gemakkelijker te beheren.
4.2 De actuele pagina in de browser
De browser toont HTML niet als een afbeelding van een tekstbestand. Hij zet het bestand om in objecten, bepaalt hun stijlen en posities en tekent het resultaat. JavaScript kan die objecten daarna veranderen.
Bouw een boom uit HTML
De DOM, of Document Object Model, is de actuele boom van elementen en tekst in de browser. Bekijk:
<body><h1>News</h1><p>Hi <a href="/">home</a></p></body>
De body heeft twee kindelementen, h1 en p. De kop bevat “News”. De alinea bevat de tekst “Hi ” en een a-element, dat “home” bevat. De link staat binnen de alinea, niet rechtstreeks binnen de body.
Tijdens het lezen van HTML ontdekt de browser bronnen in elementen zoals <link>, <script> en <img>. Hij vraagt die bronnen op en leest de CSS om de uiteindelijke stijlen van elk element te berekenen. De lay-outberekening bepaalt afmetingen en posities. Bij het tekenen worden de pixels getekend. Deze taken kunnen opnieuw plaatsvinden wanneer inhoud of stijlen veranderen.
Laat scripts uitvoeren wanneer hun elementen bestaan
Een klassiek extern script zonder defer of async onderbreekt het parsen van HTML terwijl het wordt gedownload en uitgevoerd. Als het in de head staat en een knop verderop in de body probeert te vinden, is die knop nog niet opgebouwd. document.querySelector("button") geeft null terug, dus een aanroep van addEventListener op het resultaat levert een fout op.
| Script laden | Wanneer een klassiek extern script wordt uitgevoerd |
|---|---|
Gewone <script src="app.js"> | Op de plek in het document, waarbij het parsen van HTML wordt onderbroken |
Met defer | Na het parsen van HTML, in documentvolgorde |
Met async | Zodra het script klaar is, zonder gegarandeerde volgorde |
Voeg defer toe om een script te downloaden terwijl het parsen van HTML doorgaat en het uit te voeren zodra dat parsen is voltooid. Als je een gewoon script vlak voor </body> zet, kunnen eerdere elementen ook eerst worden opgebouwd. async garandeert niet dat een latere knop bestaat; de download kan vroeg klaar zijn.
De bron-HTML en de actuele DOM kunnen verschillen
Paginabron bekijken toont de afgeleverde HTML. Het elementenpaneel, in Firefox Inspector genoemd, toont de actuele DOM. JavaScript kan inhoud hebben toegevoegd, tekst hebben veranderd of elementen hebben verwijderd. De browser kan ook onjuist opgebouwde HTML hebben hersteld, bijvoorbeeld door een element te sluiten.
Als een kop na een klik verandert, toont het elementenpaneel de gewijzigde tekst. De paginabron toont nog steeds de oorspronkelijk ontvangen HTML. Een wijziging in de DOM kan leiden tot bijgewerkte stijlen, een nieuwe lay-outberekening en opnieuw tekenen zonder een nieuw HTML-document op te halen.
Verschillende fouten hebben verschillende gevolgen
Browsers herstellen HTML volgens vastgelegde regels en slaan CSS-declaraties over die ze niet begrijpen. Een JavaScript-syntaxisfout, zoals een onvoltooide expressie, voorkomt dat het scriptbestand of codeblok start. Een niet-opgevangen uitvoeringsfout beëindigt de huidige uitvoering, waardoor latere regels tijdens die uitvoering worden overgeslagen. Andere scripts en al geregistreerde gebeurtenishandlers kunnen blijven werken. Dit verklaart een pagina waarvan de inhoud en opmaak zichtbaar blijven terwijl één functie faalt.
Browserengines implementeren gemeenschappelijke standaarden: Blink in Chrome en Edge, Gecko in Firefox en WebKit in Safari. Kleine verschillen in de implementatie maken het nuttig om in meer dan één browser te testen. Browsers bouwen ook een toegankelijkheidsboom op uit de structuur van de pagina, zodat schermlezers betekenisvolle elementen en relaties kunnen presenteren.
Belangrijkste punten
- De DOM is de actuele boom van elementen en tekst die uit HTML wordt opgebouwd.
- De browser berekent stijlen en lay-out en tekent pixels.
- Bij klassieke externe scripts wacht
deferop het parsen van HTML;asyncgarandeert die volgorde niet. - De paginabron toont de afgeleverde HTML; het elementenpaneel toont de huidige DOM.
- Een syntaxisfout verhindert dat een script start; een niet-opgevangen uitvoeringsfout beëindigt de huidige uitvoering.
- Betekenisvolle HTML ondersteunt ook de toegankelijkheidsboom.
5Maak een project en inspecteer wat er gebeurt
Een kleine projectmap en de ontwikkelaarstools van je browser bieden je een praktische manier om te leren. Sla een pagina op, bekijk die via een lokale server en gebruik de browser om de actuele elementen en verzoeken te inspecteren. De panelen beantwoorden verschillende vragen: wat staat er op de pagina, welke stijl krijgt voorrang, welke code is mislukt en welke bron is aangekomen? Doorloop een volledige cyclus van bewerken en controleren, zodat elke wijziging aanwijzingen oplevert die je kunt verifiëren.
5.1 Een editor, een projectmap en een voorbeeldweergave
Een webproject begint als bestanden in een map. Een code-editor helpt je die bestanden te schrijven en met een browser kun je het resultaat bekijken. Als de editor en browser naar dezelfde kopie van het project verwijzen, voorkom je veel verwarrende resultaten.
Kies een code-editor voor platte tekst
Een code-editor slaat plattetekstbestanden op en biedt syntaxisaccentuering, automatisch aanvullen, aanwijzingen bij fouten, een bestandsboom en andere programmeerhulpmiddelen. Tekstverwerkers slaan documentopmaak op en kunnen rechte aanhalingstekens vervangen door gekrulde aanhalingstekens. Daarom zijn ze ongeschikt voor broncode.
Visual Studio Code is een gratis optie voor Windows, macOS en Linux. Andere editors zijn onder meer Sublime Text, Zed en WebStorm. Een online oefenomgeving zoals CodePen is geschikt voor korte experimenten; de vaardigheden voor bestanden en paden kun je in verschillende hulpmiddelen gebruiken.
Maak en open een project
Voor een eerste project in VS Code:
- Download en installeer de editor vanaf de officiële website,
https://code.visualstudio.com/. - Maak een map zoals
web-projects/my-first-site. - Kies Bestand → Map openen en open
my-first-site, zodat de bestandsboom het hele project toont. - Maak
index.html. Typ in de HTML-modus!en kies de suggestie van Emmet voor een HTML-basisstructuur. - Sla op met Ctrl+S op Windows/Linux of Cmd+S op macOS.
Gebruik een mapstructuur die past bij de rollen van je bestanden:
my-first-site/
index.html
styles/main.css
scripts/app.js
images/logo.png
Gebruik namen met kleine letters en koppeltekens, zonder spaties. Houd de extensies zichtbaar zodat index.html niet ongemerkt index.html.txt wordt. Sla tekst op als UTF-8 en neem <meta charset="utf-8"> op in de HTML-head, zodat tekst zoals namen met accenten correct wordt geïnterpreteerd.
Kies een manier om de pagina te bekijken
| Voorbeeldweergave | Adres begint met | Geschikt gebruik |
|---|---|---|
| Bestand rechtstreeks openen | file:/// | Eenvoudige controles van HTML en CSS |
| Een lokale webserver gebruiken | http://localhost:.../ | Webpaden en functies testen die via HTTP worden aangeboden |
Een lokale webserver biedt een map op je eigen computer aan. Die kan http://localhost:5500/ of http://127.0.0.1:3000/ gebruiken; gebruik het adres dat je voorbeeldhulpmiddel geeft. Paden vanaf de hoofdmap hebben een server nodig om bij de hoofdmap van je website te beginnen. Functies zoals JavaScript-modules of gegevens ophalen hebben ook een voorbeeldweergave via HTTP nodig, omdat browsers het gebruik ervan op lokale bestandspagina's beperken.
In VS Code kan de extensie Live Preview van Microsoft of een extensie Live Server een server starten en de voorbeeldweergave na het opslaan vernieuwen. Controleer de uitgever voordat je extensies installeert, omdat extensies code op je computer uitvoeren. Opmaken bij opslaan, regelterugloop en automatisch opslaan kunnen het bewerken gemakkelijker maken; een opmaakprogramma zoals Prettier houdt de opmaak consistent.
Volg de cyclus van bewerken en controleren
Bewerk, sla op, laad opnieuw of laat de voorbeeldweergave vernieuwen, inspecteer het resultaat en verbeter het bestand. Als de browser nog steeds oude inhoud toont, controleer dan de indicator voor niet-opgeslagen wijzigingen in de editor en vergelijk het pad van de voorbeeldweergave met het project dat je hebt geopend. Mogelijk heb je twee mappen met dezelfde paginanaam. Controleer ook de exacte bestandsnaam en extensie; een extensie voor tekstbestanden kan ervoor zorgen dat de browser een bestand niet als HTML-pagina behandelt.
Belangrijkste punten
- Gebruik een code-editor die plattetekstbestanden opslaat en open de volledige projectmap.
- Zorg voor overzichtelijke mappen, exacte extensies, bestandsnamen met kleine letters en UTF-8-tekst.
- Een lokale HTTP-server ondersteunt paden vanaf de hoofdmap van de website en functies die op
file:-pagina's worden beperkt. - De werkcyclus is bewerken, opslaan, opnieuw laden, inspecteren en verbeteren.
5.2 Inspecteer elementen, stijlen en fouten
De ontwikkelaarstools van de browser laten de pagina zien die je daadwerkelijk gebruikt. Gebruik ze om een stijl te testen, een fout te lezen of de actuele pagina te vergelijken met het bestand in je editor.
Open de tools en kies een paneel
Klik met de rechtermuisknop op een deel van een pagina op een desktopcomputer en kies Inspecteren. Veelgebruikte sneltoetsen zijn F12 of Ctrl+Shift+I op Windows/Linux en Cmd+Option+I op macOS. In Safari moeten eerst de ontwikkelaarsfuncties worden ingeschakeld via Instellingen → Geavanceerd; de tekst van de optie verschilt per Safari-versie.
| Paneel | Wat het toont |
|---|---|
| Elementen, of Inspector in Firefox | Actuele DOM en stijlen van het geselecteerde element |
| Console | JavaScript-berichten, fouten en een invoerveld |
| Bronnen, of Debugger in Firefox | Geladen bronbestanden en mogelijkheden om scripts te debuggen |
| Netwerk | Verzoeken en hun antwoorden |
Zoek een stijl die voorrang krijgt
Inspecteer een kop. Als je de knoop selecteert, wordt de bijbehorende box op de pagina gemarkeerd, inclusief inhoud, binnenruimte, rand en marge. Het stijlenpaneel toont regels en hun bronlocaties, zoals main.css:12. Een doorgestreepte declaratie heeft daar geen effect: mogelijk overschrijft een andere regel die, of is de declaratie ongeldig. Ongeldige declaraties kunnen ook een waarschuwingsindicator hebben.
Open Berekend om de uiteindelijke waarden te zien. Als twee regels verschillende tekstkleuren opgeven, toont de berekende kleur het resultaat. Je kunt tijdelijk een waarde wijzigen, een declaratie uitschakelen of tekst en attributen bewerken om een idee te testen.
Gewone rechtstreekse wijzigingen hebben invloed op de DOM of stijlen in je tabblad. Bij opnieuw laden worden ze vervangen door de geladen bestanden. Om een verbetering te bewaren, maak je dezelfde wijziging in het bronbestand, sla je op en laad je opnieuw. Als je een weergegeven prijs in het elementenpaneel wijzigt, verandert de lokale weergave; de op de server opgeslagen prijs verandert niet.
Lees een consolefout als aanwijzing
Een fout bevat een bericht en meestal een bestand en regel. Bijvoorbeeld:
Uncaught TypeError: Cannot read properties of null
(reading 'addEventListener') at app.js:3
Lees app.js:3 als de bronlocatie die je moet inspecteren. De code probeerde een ontbrekend object te gebruiken. Als een selector naar een knop zocht, controleer dan of de spelling overeenkomt met een element en of het element bestond toen het script werd uitgevoerd. De melding alleen bepaalt niet welke van die oorzaken geldt.
De console toont ook mislukte pogingen om bronnen te laden, zoals een GET die eindigt op 404, en berichten die door console.log() worden afgedrukt. Een scriptfout kan verklaren waarom een knop niet werkt, ook als het bestand met succes is gedownload.
Probeer een kleine expressie en een smal scherm
De console kan JavaScript evalueren. Als je 2 + 3 typt, krijg je 5; document.title geeft de huidige titel terug. De toekenning document.body.style.background = "lightyellow" verandert de achtergrond van de pagina in het tabblad. Plak geen code van iemand die je niet vertrouwt in de console; die code wordt uitgevoerd met toegang tot de pagina en kan een account misbruiken.
Gebruik het pictogram met telefoon en tablet voor de responsieve modus. Kies een smalle breedte zoals 375 CSS-pixels om te zien hoe de lay-out past. Dit simuleert een viewport, niet elk gedrag van een echte telefoon; een controle op een echt apparaat levert extra informatie die je door het formaat te wijzigen niet krijgt.
Belangrijkste punten
- Het elementenpaneel toont de actuele DOM; Stijlen en Berekend helpen het uiteindelijke uiterlijk te verklaren.
- Gewone rechtstreekse wijzigingen moeten naar bronbestanden worden gekopieerd om opnieuw laden te overleven.
- Gebruik consolemeldingen en bronlocaties om mislukte code te onderzoeken.
- Een fout door een ontbrekend element kan ontstaan door een verkeerde selector of doordat het script te vroeg wordt uitgevoerd.
- Met de responsieve modus controleer je viewportafmetingen, terwijl echte apparaten zich anders kunnen gedragen.
5.3 Volg het laden in het netwerkpaneel
Het netwerkpaneel toont de afzonderlijke uitwisselingen achter een pagina. Het kan laten zien waarom één afbeelding ontbreekt, waarom opmaak is mislukt of waarom bij opnieuw laden minder gegevens zijn overgedragen dan verwacht.
Registreer voordat je opnieuw laadt
Open de ontwikkelaarstools, kies Netwerk, zorg dat de registratie actief is en laad de pagina opnieuw. Het paneel kan verzoeken die zijn voltooid voordat het werd geopend niet reconstrueren. Als de lijst leeg is, controleer dan de registratie en filters en laad opnieuw.
Rijen tonen de naam of URL, methode, status, het type, de grootte en de tijd van elk verzoek. Het watervaldiagram toont wanneer verzoeken begonnen en hoe hun tijden overlappen. Het helpt je om het laden van een pagina te zien als meerdere opvragingen van bronnen in plaats van als één ondeelbare handeling.
Open een rij voor alle aanwijzingen
Selecteer een verzoek. Headers toont de opgevraagde URL en methode, de antwoordstatus en de verzoek- en antwoordheaders. Voorbeeld toont een bruikbare weergave van ondersteunde antwoordinhoud. Antwoord toont de teruggestuurde inhoud directer, terwijl Timing de bestede tijd uitsplitst naar fasen van het verzoek.
Vergelijk bij een ontbrekende afbeelding het volledige opgevraagde adres met de werkelijke locatie van de afbeelding. Een bestandsnaam alleen kan een verkeerde bovenliggende map verhullen.
Onderzoek een voorbeeld van het laden
| Naam | Methode | Status | Content-Type | Overgedragen |
|---|---|---|---|---|
index.html | GET | 200 | text/html | 8,2 kB |
main.css | GET | 200 | text/css | 3,1 kB |
app.js | GET | 200 | text/javascript | 1,4 kB |
Hero.jpg | GET | 404 | text/html | 0,6 kB |
logo.png | GET | 200 | image/png | 18,5 kB |
Vijf verzoeken hebben in totaal 31,8 kB overgedragen. Het verzoek om Hero.jpg is mislukt. De kleine HTML-berichtinhoud is de foutpagina van de server, wat het mediatype text/html bij een afbeeldingsverzoek verklaart. Als het werkelijke bestand images/hero.jpg is, verander dan src="images/Hero.jpg" in src="images/hero.jpg" en laad opnieuw om de oplossing te testen.
Filter op Img om je op afbeeldingen te richten, op CSS voor stijlbladen of op een naam om een bepaalde bron te vinden. Als een stijlblad niet werkt, inspecteer dan zowel de status als Content-Type. Zelfs een 200 maakt van een HTML-antwoord geen bruikbare CSS.
Houd omleidingen en cacheantwoorden zichtbaar
Schakel logboek behouden, in Firefox Persist Logs genoemd, in voordat je navigatie volgt die je wilt onderzoeken. Een omleiding van HTTP naar HTTPS kan dan een rij met 301 en de Location-header tonen, gevolgd door een nieuw verzoek met 200.
Een rij met “(memory cache)” of “(disk cache)” betekent dat de browser opgeslagen inhoud heeft hergebruikt. Bij een 304 was er nog steeds een antwoord van de server, maar kwamen alleen headers terug. Dat bespaart een herhaalde overdracht van de berichtinhoud. De kolommen Grootte en Overgedragen beantwoorden daardoor andere vragen dan alleen de grootte van het bestand.
Gebruik Cache uitschakelen zolang de ontwikkelaarstools open zijn om te vergelijken met nieuwe opvragingen. Door netwerkvertraging te simuleren kun je zien welke inhoud bij een tragere verbinding het eerst verschijnt. De namen van snelheidsinstellingen verschillen per browserversie.
Een mislukte rij zonder antwoordstatus kan wijzen op een DNS- of verbindingsfout; Chrome kan net::ERR_NAME_NOT_RESOLVED tonen. Buiten de browser verstuurt curl -I https://example.com een HEAD en drukt het programma de status en headers af om snel een antwoord te controleren.
Belangrijkste punten
- Open Netwerk en start de registratie voordat je de pagina opnieuw laadt.
- Inspecteer de volledige URL, status, het mediatype en het antwoord samen.
- Gebruik filters voor ontbrekende bronnen en logboek behouden voor navigatie of omleidingen.
- Berichtinhoud in de cache en
304-antwoorden verminderen de overgedragen gegevens op verschillende manieren. - Het simuleren van netwerkvertraging toont het gedrag bij een tragere verbinding.
- Een ontbrekende antwoordstatus kan wijzen op een fout voordat HTTP een antwoord ontving.
Browsers, servers en HTTP: voorbeelden
1Volg een pagina van verzoek tot scherm
12 stappen
- 1IntroductieBekijk hoe een pagina wordt opgebouwd
Een pagina kan de kop al tonen terwijl een afbeelding nog laadt. Om dat te verklaren, volgen we een browser die
https://example.net/trails.htmlopent. We onderscheiden het verzoek van de browser, het antwoord van de server en de extra bronnen die de HTML noemt. Gebruik daarna dezelfde volgorde om een fout te vinden. - 2UitlegBepaal wie vraagt en wie antwoordt
De browser is de client: die begint het verzoek om een bron. De server voert software uit die antwoordt met een opgeslagen bestand of gegenereerde inhoud. Dit zijn rollen. Een laptop kan zowel je browser als een lokale testserver uitvoeren.
Bij dit bezoek vraagt de browser
/trails.htmlop en geeft de server een antwoord terug waarvan de berichtinhoud HTML bevat. - 3AnalogieZie een verzoek als een bestelling
Stel je de client voor als een klant die aan een toonbank een bestelling plaatst. Het verzoek geeft aan wat de klant wil en het antwoord is wat terugkomt.
Bij het gewoon ophalen van een HTTP-bron begint de browser de uitwisseling. De server hoeft niet te weten hoe de pagina er op je scherm uitziet; hij levert de gevraagde inhoud die de browser moet interpreteren.
- 4VoorbeeldTel het document vóór de afbeeldingen
Stel dat de teruggestuurde HTML één stijlblad, één script en twee afbeeldingen noemt. Begin met het tellen van de HTML zelf: dat is één bron. Tel het stijlblad en het script erbij op voor drie, en daarna de twee afbeeldingen voor vijf.
Bij een lege broncache zijn vijf verzoeken om bronnen nodig om deze bestanden op te halen. De pagina lijkt één geheel op het scherm, maar de onderdelen reizen afzonderlijk.
- 5UitdagingVoorspel wat een gedeeltelijk werkende pagina toont
De HTML, het script en het stijlblad komen aan, maar een van de twee afbeeldingsverzoeken mislukt. Moet de hele pagina verdwijnen? Leg uit.
---reveal---
Nee. De browser kan de ontvangen bronnen weergeven terwijl de afbeelding waarvan het verzoek mislukte ontbreekt. Elke bron heeft een afzonderlijke uitwisseling. Succes voor de HTML garandeert geen succes voor de afbeelding en een mislukte afbeelding wist de HTML niet.
- 6UitlegVind de host voordat je het pad opvraagt
Bij
https://example.net/trails.htmlherkent de browser de hostexample.neten het pad/trails.html. DNS levert een IP-adres voor die host, tenzij er al een recent antwoord in de cache staat.De browser maakt vervolgens verbinding met die bestemming. Een naamopzoeking levert het adres; de opzoeking downloadt niet de HTML of de gekoppelde afbeeldingen.
- 7KernpuntBeveilig de verbinding
Omdat het schema
httpsis, stelt de browser TLS-beveiliging in vóór de gewone HTTP-uitwisseling. Het certificaat van de server maakt het mogelijk zijn identiteit voor het domein te controleren.Dit beschermt berichten tegen lezen of wijzigen op het netwerk. Een geldig certificaat en een beveiligde verbinding bewijzen niet dat een website eerlijk handelt of eerlijke beweringen doet.
- 8VoorbeeldBouw de pagina op terwijl de bestanden aankomen
De browser verstuurt zijn verzoek en ontvangt het HTML-antwoord. Bij het lezen van de HTML vindt hij de adressen van de CSS, het script en de afbeeldingen. De browser vraagt die bronnen op en kan de downloads laten overlappen.
Hij bouwt het document op, past stijlen toe, voert scripts uit en tekent de pagina. Tekst kan als eerste verschijnen, waarna de afbeeldingen volgen. De browser wacht niet op elk bestand voordat hij met alle weergavetaken begint.
- 9UitdagingMaak onderscheid tussen geen adres en geen bestand
Eén bezoek mislukt met een fout bij het omzetten van de naam en zonder antwoordstatus. Een ander geeft
404terug voor/trails.html. Hebben beide fouten dezelfde fase bereikt?---reveal---
Nee. Bij het eerste bezoek werd het adres van de host niet gevonden, voordat een HTTP-antwoord aankwam. Het tweede bereikte een server die antwoordde maar de bron niet vond. In beide gevallen kan een browserfoutpagina verschijnen, dus inspecteer de netwerkaanwijzingen.
- 10VerbandHergebruik eerder werk bij een volgend bezoek
Bij een later bezoek kent de browser mogelijk het adres van de host al en heeft hij nog geldige kopieën van sommige bestanden. DNS-caching voorkomt een nieuwe naamopzoeking; caching van bronnen voorkomt enkele herhaalde downloads.
Als een opgeslagen bron moet worden gecontroleerd, kan de server antwoorden met
304 Not Modified. Die uitwisseling vindt nog steeds plaats, maar bevat geen nieuwe berichtinhoud van de bron omdat de opgeslagen inhoud bruikbaar is. - 11UitdagingVind de fout in de volledige reeks
De HTML van een pagina geeft
200terug, maar het CSS-verzoek geeft404terug. De pagina toont tekst zonder opmaak. Welke stap is mislukt en wat moet je controleren?---reveal---
Het eerste paginaverzoek is geslaagd; een later verzoek om een bron is mislukt. Vergelijk de opgeloste URL van het stijlblad met de werkelijke locatie en bestandsnaam. De DNS-instelling opnieuw uitvoeren is geen nuttige eerste controle, omdat de server het CSS-verzoek al heeft beantwoord.
- 12SamenvattingGebruik de volgorde om een controle te kiezen
Lees het laden als een reeks stappen: herken de host, vind het adres, maak verbinding, verstuur een verzoek, ontvang het antwoord en bouw de pagina op. Bedenk dat de HTML meestal meer verzoeken in gang zet.
Als iets mislukt, bepaal dan eerst welke fase is mislukt. Controleer daarna de betreffende host, het pad, het antwoord of de browserhandeling.
2Lees een URL en volg de links
14 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieGeef elk adresonderdeel een taak
- 2VoorbeeldOnderscheid de bestemming van de bron
- 3UitlegOnderscheid invoer van een locatie op een pagina
- 4UitdagingVerander alleen het fragment
- 5UitlegLees een host vanaf rechts
- 6VoorbeeldInspecteer een misleidend gelijkende host
- 7UitdagingLeg uit wat registratie oplevert
- 8UitlegKies het beginpunt van de link
- 9VoorbeeldGa omhoog vanuit een geneste map
- 10VoorbeeldProbeer een ander geldig beginpunt
- 11UitdagingVind een nabijgelegen pagina
- 12TipNeem de schrijfwijze van het pad precies over
- 13UitdagingCombineer de controles van host en pad
- 14SamenvattingLees voordat je volgt
3Lees een uitwisseling en kies de volgende controle
16 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieGebruik de berichten als aanwijzingen
- 2VoorbeeldLees de eerste regel en de host
- 3UitlegKoppel een methode aan de handeling
- 4VoorbeeldLees een kleine ingediende berichtinhoud
- 5UitdagingVoorspel wat een herhaalde inzending doet
- 6UitlegOnderscheid status, headers en berichtinhoud
- 7VoorbeeldVerbind afzonderlijke verzoeken met een cookie
- 8VoorbeeldGebruik eerst een nog geldige kopie
- 9VoorbeeldControleer nadat de geldigheid is verlopen
- 10UitdagingVerklaar een kleine overdracht
- 11UitlegGebruik de klasse om het probleem af te bakenen
- 12VoorbeeldMaak onderscheid tussen identiteit, toestemming en pad
- 13VoorbeeldVolg een nieuwe locatie
- 14UitdagingLees de foutklasse nauwkeurig
- 15UitdagingLees het antwoord achter de naam
- 16SamenvattingCombineer de berichtonderdelen
4Zet bronbestanden om in een actuele pagina
12 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieVolg een knop van opmaakcode tot gedrag
- 2VoorbeeldGeef de inhoud betekenis
- 3VoorbeeldVoeg een vormgevingsregel toe
- 4UitlegReageer op de klik
- 5UitdagingKies het bestand voor de wijziging
- 6UitlegBouw de actuele boom op
- 7VoorbeeldTe vroeg uitvoeren en niets vinden
- 8VoorbeeldWacht op het geparste document
- 9KernpuntVergelijk de bron met het actuele resultaat
- 10UitdagingVerklaar een zichtbare pagina met een niet-werkende knop
- 11UitdagingCombineer aankomst, uitvoeringsmoment en actuele DOM
- 12SamenvattingVerbind elke fase met het resultaat
5Stel een pagina in, bekijk, inspecteer en verbeter die
15 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieMaak één wijziging die je kunt controleren
- 2UitlegOpen een project in een code-editor
- 3VoorbeeldBekijk de pagina via HTTP
- 4UitdagingZoek waarom een wijziging lijkt te ontbreken
- 5VoorbeeldInspecteer het element dat je wilt veranderen
- 6VoorbeeldTest een stijl en sla die daarna op
- 7UitdagingZoek aanwijzingen voor een knop die niet reageert
- 8TipControleer een smalle viewport
- 9UitlegLeg de volgende laadactie vanaf het begin vast
- 10VoorbeeldLees de volledige URL van een mislukte afbeelding
- 11VoorbeeldControleer het resultaat van de correctie in de broncode
- 12KernpuntOnderscheid hergebruik van een nieuwe overdracht van berichtinhoud
- 13UitdagingInterpreteer een omleiding en de bestemming
- 14UitdagingCombineer de controles in editor en browser
- 15SamenvattingRond de cyclus af in de opgeslagen broncode
Browsers, servers en HTTP: oefenvragen
Set 1: Volg adressen en verzoeken om bronnen10 Oefenvragen
Vraag 1 van 10
Toon antwoordVerberg antwoord
Vraag 2 van 10
Toon antwoordVerberg antwoord
Vraag 3 van 10
https://learn.example.org:9443/notes.html?unit=4#tasks het pad van het verzoek?Toon antwoordVerberg antwoord
/notes.html, het onderdeel na de host en de optionele poort dat de bron aanduidt. De query begint bij ? en het fragment bij #, dus geen van beide hoort bij het pad. Het HTTP-verzoekdoel kan de query bevatten en omvat dan meer dan alleen het pad.Vraag 4 van 10
https://billing.example.com.check.example.net/pay. Welk geregistreerd domein beheert deze host?Toon antwoordVerberg antwoord
.net is de publieke uitgang en example.net is het geregistreerde domein. De labels check, com, example en billing staan daaronder. Het bekende example.com aan de linkerkant betekent niet dat deze host via dat geregistreerde domein wordt beheerd.Vraag 5 van 10
https://example.org/ naar https://example.org/course/, met behoud van de mapstructuur. Op course/lessons/start.html werkt ../images/map.png, maar /images/map.png niet; de kaart staat op course/images/map.png. Wat verklaart het verschil?Toon antwoordVerberg antwoord
/course/lessons/, dus ../ gaat omhoog naar /course/ voordat het images/ ingaat. Een schuine streep aan het begin vervangt het huidige pad en vraagt /images/map.png op vanuit de hoofdmap van de host. Door de mappenboom te verplaatsen bleef de relatieve verhouding behouden, maar veranderde de locatie onder de hoofdmap van de website.Vraag 6 van 10
Toon antwoordVerberg antwoord
Vraag 7 van 10
200 terug. Het verzoek om een diagram geeft 404 terug. Wat bewijzen die aanwijzingen?Toon antwoordVerberg antwoord
404 is een HTTP-antwoord dat aangeeft dat de gevraagde bron niet is gevonden. De geslaagde HTML-uitwisseling en de mislukte diagramuitwisseling staan los van elkaar, dus de pagina kan zonder dat diagram worden weergegeven. Een onbereikbare server zou het 404-antwoord niet hebben geleverd.Vraag 8 van 10
Toon antwoordVerberg antwoord
Vraag 9 van 10
index.html te dubbelklikken, laadt een afbeelding op /images/compass.png niet. Het project bevat dat bestand in de map images. Welke wijziging in de voorbeeldweergave zorgt ervoor dat de eerste schuine streep naar de hoofdmap van de website verwijst?Toon antwoordVerberg antwoord
/images/compass.png vanaf die hoofdmap wordt opgelost. Een rechtstreekse file:-voorbeeldweergave interpreteert een schuine streep aan het begin vanuit de hoofdmap van het bestandssysteem in plaats van de projectmap. Dat de afbeelding binnen het project bestaat, verandert dat beginpunt niet.Vraag 10 van 10
Toon antwoordVerberg antwoord
Set 2: Lees berichten en volg mislukte verzoeken om bronnen10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
hours.html, maar voert een programma uit om een antwoord op een zoekopdracht in de catalogus samen te stellen. Hoe worden de twee antwoorden ingedeeld?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
https://example.net/find?q=trees#results. Welk verzoekdoel gebruikt een gewoon HTTP/1.1-verzoek?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
https://example.com/help/setup/linux.html. Het stijlblad staat op https://example.com/assets/theme.css. Welk relatief pad leidt ernaartoe?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Content-Type: application/json. Wat beschrijft deze header?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
401. Na geldig inloggen antwoordt het met 403. Wat is er veranderd?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
/join; een 302 leidt om naar /register. De browser stuurt daar vervolgens een GET en ontvangt 405. /register accepteert POST met de oorspronkelijke berichtinhoud en de verhuizing is tijdelijk. Welke wijziging van de omleiding behoudt de bedoelde inzending?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
home.html.txt. Welke correctie van de bestandsnaam maakt er een HTML-bronbestand van?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
https://example.org/journal/entry.html vraagt een link styles/site.css op. Netwerk toont 200, Content-Type: text/html en een HTML-terugvalpagina. De echte CSS staat op /styles/site.css. Welke correctie in de broncode en welke controle verhelpen de fout?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 3: Verbind paginagedrag met netwerkaanwijzingen10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
https://help.example.com/topic en https://example.com.help.example.org/topic. Beide hebben geldige HTTPS-certificaten. Welke vergelijking geeft aan welke domeinen ze beheren en wat de certificaten betekenen?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
https://example.net/reference/start.html gebruikt ../about.html. Naar welk adres lost de browser dit op?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
304 gevalideerd. Een gewijzigd stijlblad geeft 200 terug met 5 kB berichtinhoud. Een HTML-pagina die niet in de cache staat, geeft 9 kB berichtinhoud terug. Hoeveel gegevens aan berichtinhoud gaan er over het netwerk, zonder de headers mee te tellen?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
200 en geeft een fout bij het aanroepen van addEventListener op null. De selector komt exact overeen met een knop verderop in de body en de uiteindelijke DOM bevat die knop. Welke wijziging verhelpt het getoonde timingprobleem?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
projects/atlas/index.html, maar het adres van de voorbeeldweergave verwijst naar projects/atlas-copy/index.html. Na opnieuw laden zie je nog steeds de oude kop. Wat moet je eerst op elkaar afstemmen?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 4: Onderzoek een volledige lokale pagina10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
www.example.org, maar de foto's staan op adressen bij photos.example.net. Waar vraagt de browser de foto's op?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
www.example.com geven 200 terug. Een logo-URL gebruikt cdn.example.net en de rij toont net::ERR_NAME_NOT_RESOLVED zonder status. Welk deel van de laadactie is mislukt en waarom kan de tekst toch verschijnen?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
# en wordt lokaal door de browser afgehandeld?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
/comments. Een 307 leidt om naar /store, dat alleen POST accepteert, één reactie per inzending aanmaakt en 201 teruggeeft. De gebruiker herhaalt de oorspronkelijke inzending één keer; de browser volgt de omleiding opnieuw. Welke methoden bereiken /store en hoeveel reacties worden aangemaakt?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Set-Cookie: session=xyz. De browser slaat de cookie op en het volgende verzoek valt binnen het toepassingsbereik van de cookie. Met welke verzoekheader kan de server dat verzoek aan de opgeslagen sessie koppelen?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
200. Hoe moet je dit resultaat beschrijven?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
<h1> alleen om een gewone opmerking groter te maken. Welke wijziging geeft de opmerking een passende rol en behoudt de controle over de grootte?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
helpers.js definieert een functie en page.js gebruikt die en een knop verderop in de body. Beide gebruiken momenteel async en de fouten verschillen met de downloadsnelheid. Welke wijziging bij het laden maakt beide afhankelijkheden in de juiste volgorde beschikbaar?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
color: green doorgestreept en een actieve color: maroon; Berekend meldt maroon. Je verandert de actieve waarde in teal in de ontwikkelaarstools, maar na opnieuw laden keert maroon terug. Wat tonen beide waarnemingen en hoe behoud je teal?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Kom je niet uit je eigen opgave? Huiswerkhulp
Kernbegrippen
A
absolute URL
https://example.net/help.html bereikt die host zowel vanaf een startpagina als vanuit een bericht in een geneste map.antwoord met toegangsweigering
403, wat betekent dat de server het verzoek heeft begrepen maar de gevraagde toegang weigert.403 ontvangen wanneer het geen toestemming heeft om een beveiligde bron te openen.attribuut
href voor de bestemming van een link of src voor een afbeeldingsbron.<a href="team.html">Team</a> vertelt het attribuut href de browser waar de link naartoe gaat.authenticatie
401-antwoord kan betekenen dat het verzoek geldige authenticatie nodig heeft voordat de server het vervult.B
berekende stijlen
berichtinhoud
bovenliggende map
../ gaat één niveau omhoog tijdens het oplossen van een relatief webpad./notes/week/page.html bereikt ../index.html na één stap omhoog /notes/index.html.bron
C
cache
certificaat
client
code-editor
console
app.js:8 noemt, wijst je naar de scriptregel die bij de mislukte bewerking betrokken is.Content-Length
Content-Length: 24576 24.576 bytes, of ongeveer 24,6 kB aan inhoud.cookie
Set-Cookie; de browser stuurt die later terug in Cookie.CSS
D
declaratie
color: teal;, dat één vormgevingsinstelling binnen een regel vastlegt.p { color: navy; margin: 1rem; } stellen twee declaraties de kleur en marge van alinea's in.DNS
DOM
domeinnaam
docs.example.com is gemakkelijker te onthouden dan het numerieke adres dat DNS ervoor kan teruggeven.F
fragment
# dat de browser lokaal afhandelt, vaak door naar een element met een overeenkomende ID te gaan.#contact kan het opgehaalde document laten scrollen zonder contact naar de server te sturen.H
host
https://learn.example.net/intro is de host learn.example.net en het pad /intro.HTML
HTTP-header
Name: value.Accept: text/html geeft aan dat de client een HTML-antwoord kan verwerken.HTTP-methode
HTTPS
I
idempotente methode
internet
IP-adres
203.0.113.10 kan een serverbestemming voorstellen in een diagram over het laden van een pagina.J
JavaScript
L
label
help.example.org heeft drie labels, die je van de algemene uitgang naar de specifieke naam leest.lay-outberekening
leeg element
img, meta of link.<img src="map.png" alt="Trail map"> beschrijft een afbeelding zonder bijbehorende sluitingstag.logboek behouden
lokale webserver
http://localhost:5500/ behandelt een pad vanaf de hoofdmap van de website als webpad in plaats van als pad vanaf de hoofdmap van de schijf.loopbackadres
127.0.0.1 in IPv4 of ::1 in IPv6.127.0.0.1 opent, maakt je browser verbinding met een dienst die op je eigen computer draait.M
mediatype
text/css voor CSS of application/json voor gegevens.text/html teruggeeft, onderzoek dan of de server in plaats daarvan een foutpagina heeft geleverd.N
netwerkfilter
netwerkvertraging simuleren
nog geldig cacheantwoord
max-age=600 kan 10 minuten geldig blijven voordat opnieuw over de geldigheid moet worden beslist.O
omleiding
Location-header staat bij een omleidingsstatus.301 vanaf een HTTP-adres kan de browser het HTTPS-adres in een tweede uitwisseling laten opvragen.ontwikkelaarstools
overgedragen gegevensgrootte
304 draagt headers over zonder de berichtinhoud van de afbeelding, dus is de vastgelegde overdracht veel kleiner dan die afbeelding.P
pad
/images/map.png vertelt de server welke bron de browser na het verbinden wil hebben.pad vanaf de hoofdmap
/ en duidt een locatie aan vanuit de hoofdmap van de huidige website in plaats van de map van de huidige pagina.example.org begint /images/logo.svg bij het bovenste padniveau van die host.parsen
poort
8080 in http://localhost:8080/ selecteert de poort die deze lokale testserver gebruikt.projectmap
index.html, styles/ en images/ bij elkaar houdt, kun je gemakkelijker controleren of een link overeenkomt met een bestand.Q
querystring
?, gewoonlijk ingedeeld als name=value-paren die door & zijn gescheiden en met het verzoekdoel worden meegestuurd./search?q=css&page=3 levert de query zowel de zoekterm als de gevraagde pagina met resultaten.R
registrar
registry
relatieve URL
/guide/start.html bereikt de link images/icon.png de map images binnen /guide/.responsieve modus
S
selector
h2 in h2 { color: teal; } komt overeen met kopelementen van het tweede niveau op de pagina.server
soft 404
200, verschilt van een antwoord waarvan de werkelijke status 404 is.statuscode
200 voor de HTML en 404 voor één afbeelding hebben, omdat de bronnen afzonderlijke verzoeken hebben.subdomein
example.com kan een dienst op support.example.com instellen zonder een nieuw domein te registreren.T
tekenen
time-out van de gateway
504-antwoord dat aangeeft dat een tussenliggende server niet op tijd antwoord van een achterliggende server ontving.504 teruggeven terwijl die wacht op de applicatieserver die de pagina had moeten samenstellen.TLS
toestandsloos protocol
topleveldomein
.com, .org of de landcode .nl.news.example.org is het TLD .org; news is een specifieker label onder de geregistreerde naam.U
uitgesteld script
defer dat na het parsen van HTML wordt uitgevoerd, waarbij zulke scripts de documentvolgorde behouden.uitvoeringsfout
null kan verhinderen dat een script zijn knop instelt, ook al is het script met succes gedownload.URL
https://example.org/help.html#hours is het hele adres de URL; example.org is alleen de host.URL-schema
https voor versleuteld HTTP of file voor een lokaal bestand.http://localhost:8080/ vertelt de browser HTTP te gebruiken voor het lokale verzoek om een voorbeeldweergave.UTF-8
V
veilige methode
verzoekdoel
/guide?mode=short#tips levert bij een gewoon verzoek het verzoekdoel /guide?mode=short op.viewport
W
watervaldiagram
web
Over deze les
Door StudeliFout melden
Maak je eigen Studiemateriaal
Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.