HTTP 400:
Bad Request uitgelegd

  1. Home
  2. Handboek
  3. HTTP 400

Wanneer wordt er een statuscode getoond?

Als je iedere dag op het net surft, dan loopt er natuurlijk af en toe wel iets fout. Soms zal je browser een statuscode tonen in plaats van de gewenste webinhoud. Wanneer de webserver en de client – je webbrowser dus – met elkaar communiceren, brengen ze eigenlijk altijd statusmeldingen over. Echter, alleen wanneer er een probleem is, toont je browser je een cryptische foutmelding. De HTTP 400-code wijst er bijvoorbeeld op dat er iets fout is gelopen met de request (het verzoek) van de client, de browser dus. We leggen je hieronder exact uit wat deze foutmelding betekent en hoe je het probleem kan verhelpen.


Wat betekent de 400 Bad Request-foutmelding?

Met statuscodes toont de webserver de status van de verzoeken aan de client. Als de server het bericht 200 terugstuurt, dan verloopt alles goed. Deze krijg je normaal dan ook niet te zien wanneer je surft. Het verzoek was immers succesvol en de gewenste inhoud werd correct overgedragen. Anders is dat wanneer de codes 4xx en 5xx getoond worden; deze duiden op uiteenlopende fouten.

Alle 1xx-codes zijn informatief en alle 2xx-codes wijzen op een succesvolle actie. Internetgebruikers krijgen normaal gesproken dus codes te zien vanaf 3xx; deze betekenen dat de communicatie wel succesvol verlopen is, maar dat de client nog een extra stap moet uitvoeren. Meestal hebben deze extra stappen te maken met het doorsturen van informatie. Dit doet de browser dan ook automatisch, wat betekent dat je dit als gebruiker dus meestal niet opmerkt.

Anders is het wanneer je te maken hebt met foutmeldingen. Terwijl 5xx-fouten verbonden zijn aan de server, wijzen alle 4xx-codes op misgelopen verzoeken van de client. De bekendste melding is de 404 Not Found Error. Een verkeerd geschreven URL of verwijderde inhoud zijn de meest voorkomende oorzaken van deze foutmelding. Een andere is bijvoorbeeld de. 403-forbidden-melding, die aangeeft dat je geen toegang hebt tot de inhoud van de website.

Wanneer je geconfronteerd wordt met een 400-foutmelding is de vraag “Wat ging hier verkeerd?” beantwoorden niet zo makkelijk. Het betekent immers dat het verzoek zelf in zekere mate gebrekkig is geweest. Het internetprotocol HTTP werd, althans volgens de webserver, niet correct nageleefd; hierdoor kan de request niet verwerkt worden. De server zag het verzoek dus als fout of zelfs als schadelijk. Daarom kan de server de website niet (volledig) weergeven. De redenen van de foutmelding zijn doorgaans te herleiden tot de browser of een fout van de gebruiker.

  • Verkeerde URL: net als de 404-foutmelding, duidt een Bad Request erop dat de gebruiker een verkeerd webadres heeft ingegeven, of dat hij bijvoorbeeld speciale tekens gebruikt die niet zijn toegestaan.
  • Verkeerde cookies: een andere reden voor de 400-foutmelding zijn verkeerde of verouderde cookies in je browser.
  • Verouderde DNS-records: je DNS-cache kan verouderde data bevatten, die naar verkeerde IP-adressen linken.
  • Te grote bestanden: als je erg grote bestanden wilt uploaden, kan het zijn dat de server weigert deze te aanvaarden. Ook dit wordt als een Bad Request geclassificeerd.
  • De header is te lang: bij de communicatie tussen de server en de client wordt de header gebruikt om de request te definiëren. Sommige webservers stellen een bovengrens in voor de lengte van de header.

Wanneer je de HTTP 400 Bad Request-melding krijgt, is het niet meteen duidelijk wat het probleem is. Als je webbrowser echter IIS 7.0, IIS 7.5, of IIS 8.0 gebruikt, kan er nog meer gedetailleerde informatie afgeleid worden uit de statuscode.


  • 400.1: Invalid Destination Header
  • 400.2: Invalid Depth Header
  • 400.3: Invalid If Header
  • 400.4: Invalid Overwrite Header
  • 400.5: Invalid Translate Header
  • 400.6: Invalid Request Body
  • 400.7: Invalid Content Length
  • 400.8: Invalid Timeout
  • 400.9: Invalid Lock Token

Overigens, de 400-fout treedt niet enkel bij het surfen op. Ook andere programma’s, zoals de e-mailclient, kunnen deze statuscode ontvangen bij de communicatie met de server.


Hoe los je een 400 Bad Request op?

Wanneer een statuscode een foutmelding toont, volstaat het soms simpelweg de pagina opnieuw te laden. Wanneer de fout zich voor het eerst voordoet op een webpagina die je normaal gesproken zonder problemen kunt laden is het probleem immers hoogstwaarschijnlijk tijdelijk. Maak de browsercache leeg wanneer de pagina herladen niet helpt; je browser kan net op het moment van de fout een kopie in de buffer hebben opgeslagen.


Foute URL

De volgende stap in de analyse van het probleem is het controleren van de URL: als je het adres handmatig in de browser hebt ingegeven, controleer dan op tikfouten. Als je op een link geklikt hebt, ga dan de spelling in de link na of ga rechtstreeks naar de homepage en zoek daar de juiste link op.


Foute cookies

Het probleem kan veroorzaakt zijn door verouderde of verkeerde cookies. Om dit op te lossen moet je eenvoudigweg het cookiebestand in je webbrowser verwijderen. Wanneer je de volgende keer de pagina laadt, creëert de software immers een nieuwe cookie.

Feit!

Cookies slaan informatie op over bezoeken aan een website, zodat de browser weet
of je de website al bezocht hebt en met welke instellingen je toen akkoord bent gegaan.
De EU-richtlijn en de Nederlandse cookiewet beschermen de privacy van de internetgebruiker
wanneer cookies gebruikt worden.


Foute DNS-gegevens

Als oplossing kan je ook proberen om de DNS-cache te verwijderen. Bij het surfen op het web worden de domeinnamen die je ingeeft vertaald in IP-adressen, die gekoppeld zijn aan een server. Om dit te doen, moet er eerst een name-resolution uitgevoerd worden met een nameserver. Om dit proces in te korten, slaat je PC de verzamelde gegevens tijdelijk op in de DNS-cache. De name-resolution wordt echter direct geladen vanuit de cache, wanneer bij het ingeven van het domein in de browser de inhoud van de vorige ingave van hetzelfde domein nog niet automatisch uit de DNS-cache verwijderd is. Als deze vorige inhoud gecorrumpeerd is of niet meer up-to-date, dan verschijnt dus de “HTTP Bad Request”. Om de verkeerde ingave te verwijderen, moet je het volledige DNS-cache leegmaken. Bij Windows voer je daarvoor de opdrachtprompt uit door het volgende commando in te geven:

ipconfig /flushdns

Voor Mac-systemen hangt het commando dan weer af van welke OS-versie er gebruikt wordt. Alle opdrachten worden via de terminal ingegeven:

  • OS X 10.4 (Tiger): lookupd -flushcache
  • OS X 10.5 (Leopard): dscacheutil -flushcache
  • OS X 10.6 (Snow Leopard): dscacheutil - flushcache
  • OS X 10.7 (Lion): sudo killall -HUP mDNSResponder
  • OS X 10.8 (Mountain Lion): sudo killall -HUP mDNSResponder
  • OS X 10.9 (Mavericks): dscacheutil -flushcashe; sudo killall -HUP mDNSResponder
  • OS X 10.10 (Yosemite) (10.10.1 – 10.10.3): sudo discoverutil udnsflashcaches
  • OS X 10.10 (Yosemite) (10.10.4+): sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
  • OS X 10.11 (El Capitan): sudo killall -HUP mDNSResponder
  • macOS 10.12 (Sierra): sudo killall -HUP mDNSResponder

Problemen met het HTTP-headerveld

Als internetgebruiker: verwijder de cookies en reset de browser

De HTTP 400-fout komt voor als de HTTP-header te lang is. In principe is de lengte van headers niet begrensd. Toch kan de doel-webserver wel een limiet ingesteld hebben. De header bestaat uit verschillende velden, waarin verzoeken en antwoorden worden gedefinieerd. Als de parameters van beide digitale gesprekspartners met elkaar overeenkomen, dan worden de gevraagde gegevens uitgewisseld. Als de communicatie niet werkt, dan wordt er een foutmelding getoond. Waarschijnlijk wordt de fout veroorzaakt door je browser, aangezien het gaat over de communicatie tussen de browser en de webserver én de oorsprong van 400-fouten doorgaans bij de client ligt. De beste manier om te testen of je standaardbrowser de fout veroorzaakt is simpelweg tijdelijk van browser switchen.

Als de pagina toegankelijk is met de andere browser, ga terug naar je oorspronkelijke browser. Mocht je het nog niet gedaan hebben, verwijder dan alle cookies. Om veiligheidsredenen is het immers beter alle cookies te verwijderen in plaats van enkel één. Cookies worden overgebracht in de header en zo krijgt de webserver kennis over je vorig bezoek. Als de browser te veel verzoeken krijgt, dan kan de header dus te lang worden voor de eventuele lengtelimiet van de webserver.

Als deze oplossing niet werkt, dan kun je proberen om de browser volledig opnieuw te installeren of deze te resetten, zodat je terugkeert naar de oorpsronkelijke instellingen. De manier waarop je de browser reset, hangt af van welke browser je gebruikt. Voor Firefox: voer about:support in om de helpfunctie te bereiken. Hier vind je veel informatie die je helpt om fouten in de software te decteren. Ook als je contact opneemt met een technische helpdesk is het belangrijk deze gegevens bij de hand te hebben. Op deze pagina zie je een knop Firefox opfrissen of clean up Firefox, wanneer je Firefox in het Engels gebruikt. Als je hierop klikt, verwijdert je browser bepaalde extensions en instellingen, maar worden je huidige standaardinstellingen behouden.

Internet Explorer kun je opnieuw instellen door bij Internetopties onder de tab Geavanceerd de knop Opnieuw instellen te selecteren. Gebruik je IE6, dan krijg je Standaardinstellingen herstelllen te zien. De Microsoft browser laat je bij het resetten de keus of je ook je persoonlijke instellingen wilt verwijderen. Het is aan te raden om dit te doen, aangezien Internet Explorer de cache en de cookies ook als persoonlijke instellingen ziet.

Bij Chrome vind je de reset-functie onder de Instellingen, waar je Instellingen resetten naar de oorspronkelijke standaardwaarden moet aanklikken. De browser behoudt je persoonlijke instellingen, zoals opgeslagen passwords en geschiedenis, maar brengt al het andere terug naar de oorspronkelijke settings. Bij Google Chrome kan je de originele instellingen dus herstellen met één enkele klik – sluit de browser en open deze opnieuw om de wijzigingen te activeren.

HTTP 400: Reset-functie Chrome
Reset-functie bij Chrome

Als webmaster: stel limieten in

Wanneer je een website beheert en bezoekers geklaagd hebben over 400-foutmeldingen, dan kan het handig zijn om te serverinstellingen te veranderen. Je kunt de limiet immers veranderen om ervoor te zorgen dat gebruikers geen foutmelding te zien krijgen door een te lange HTTP-header. Echter, je moet je ervan bewust zijn dat bij hogere limieten het risico op gebrekkige verzoeken toeneemt. Ook de Internet Engineering Task Force (IETF) heeft het onderwerp 400 Bad Request aangeboord in hun documentatie over HTTP 1.1 en heeft hierbij gewezen op het risico van hoge limieten (“smuggling attacks”).

Citaat:

"A server that receives a request header field, or set of fields, larger than it wishes to process MUST respond with an appropriate 4xx (Client Error) status code. Ignoring such header fields would increase the server's vulnerability to request smuggling attacks (Section 9.5).”

- Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing

Wil je de limiet toch verhogen? Elke webserver heeft zijn eigen methode. Met ISS (ASP.NET) kun je de 'maxRequestLength’ en 'maxAllowedContentLength' bijvoorbeeld veranderen. Bij Apache kun je dan weer de limiet vastleggen door ‘LimitRequestFieldSize’ te gebruiken.


Neem contact op met de webmaster of technische support

Jammer genoeg is het mogelijk dat de oplossingen die we hierboven vermeld hebben het probleem niet verhelpen. In dat geval moet je elders hulp zoeken. In principe zijn er twee verschillende aanspreekpunten, afhankelijk van of de HTTP 400-foutmelding getoond wordt op één specifieke website of voorkomt op meerdere sites. Contacteer de websitebeheerder als het om één specifieke site gaat en de pogingen om het op te lossen niet succesvol bleken. Contacteer de internetprovider als je niet op een normale manier kunt surfen, omdat het 400 Bad Request-bericht voortdurend getoond wordt. Zelfs wanneer het probleem niet echt bij de provider ligt, kan de technische helpdesk vaak toch behulpzaam zijn.

In beide situaties is het belangrijk dat je de contactpersoon alle informatie geeft die je hebt verzameld. Dit houdt ook alle pogingen in die je al hebt ondernomen om het vervelende probleem te verhelpen. Daarnaast moet je ook informatie geven over je systeem; welk besturingssysteem en welke browser gebruik je? Heb je hierop extensies geïnstalleerd? Gebruik je een firewall of ga je via een proxy het internet op? Antwoorden op deze vragen zullen een technische hulpdienst en een webmaster helpen het probleem op te lossen. Zo kun je opnieuw ongestoord surfen, zonder dat je de 400-foutmelding krijgt.

Kun je niet genoeg krijgen van onze oplossingen? Bekijk zeker ook onze pagine over het oplossen van de ERR-SSL-PROTOCOL-ERROR.