Hoewel het gebruik van afbeeldingen, video en GIF’s in de begindagen van het web niet gebruikelijk was, verwachten we nu dat een site naast informatieve tekst ook aantrekkelijk beeldmateriaal biedt. Het is ook geen verrassing dat als de communicatie tussen de browser en de server fout loopt door een mismatch in de media, je een foutmelding krijgt. In dit geval de “HTTP 415” fout.

Omdat media bijna een voorwaarde is voor het moderne web, betekent een foutmelding dat je snel een oplossing nodig hebt. Maar in tegenstelling tot andere foutoplossingen – vooral voor WordPress websites – is dit probleem een taaie. Je hebt misschien wat coderingskennis nodig om dit op te lossen, maar dat is iets voor later.

Bekijk onze videohandleiding voor het oplossen van de 415 fout

Voor dit artikel gaan we kijken naar de “HTTP 415” fout, en praten over wat de oorzaak ervan is. Van daaruit zullen we bespreken hoe je hem kunt oplossen.

Wat de HTTP 415 fout is

De “HTTP 415” fout is een van de vele 4XX statuscodes. Als je begrijpt dat hij gerelateerd is aan andere fouten zoals een 404, begin je te begrijpen wat er gebeurt.

Kort gezegd hebben 4XX fouten allemaal te maken met iets dat ofwel de client ofwel de server nodig heeft. De volledige naam van de fout – een “415 Unsupported Media Type” – verraadt het al. De server ontvangt een mediabestandstype dat hij niet herkent of niet kan accepteren.

Onder de meeste omstandigheden zul je de “HTTP 415” fout zien wanneer je een application programming interface (API) gebruikt. Het is een probleem aan de serverkant, en hierna zullen we bespreken waarom dit gebeurt.

Waarom de HTTP 415 fout optreedt

Hoe je het ook noemt – de “HTTP 415” fout, de “415 Unsupported Media Type” fout – het betekent dat de server weigert een verzoek van de browser te accepteren. Dit komt vaak omdat wat de browser verstuurt (de payload) niet het juiste format heeft.

Het is een soortgelijk probleem als de “422 Unprocessable Entity” fout, omdat ze allebei te maken hebben met de verkeerde gegevens die de server bereiken, en de laatste gaat door het lint. Het is ook goed erop te wijzen dat er een onderscheid is tussen de gegevens die de browser verstuurt, en wat de server ontvangt. Ze lijken misschien hetzelfde, maar er is een verschil.

Een algemene strategie om fouten te voorkomen zal bijvoorbeeld optreden wanneer een gebruiker een niet-herkend bestandstype neemt en dat uploadt via een interface die alleen PNG’s accepteert. Als je niet precies aangeeft welke typen media een server kan verwerken, dan zou dat aan de backend een fout veroorzaken. Aan de frontend ziet een gebruiker misschien helemaal niets. WordPress gebruikers krijgen een adminschermmelding:

Het WordPress Upload New Media scherm, met het uploader dialoogvenster met een knop Select Files, informatie over de maximale bestandsgrootte en een beheerdersfout die een 'file type not permitted' fout laat zien, en details van het bestand.
De File Type Not Permitted fout binnen WordPress.

Het goede nieuws is dat WordPress een permissieve infrastructuur heeft – denk bijvoorbeeld aan de verschillende bestandstypen die je kunt uploaden naar de Mediabibliotheek.

Toch is dit eerder een probleem op ontwikkelaarsniveau dan een gebruikersfout. Daarom gaan we nu kijken naar de mogelijke oplossingen.

Zo los je de HTTP 415 fout op

Samengevat vertelt de “HTTP 415” fout je dat de server een bestandstype niet accepteert omdat het die payload niet ondersteunt. Dit betekent dat er een probleem is in de onderliggende PHP code dat opgelost moet worden.

Als je op dit punt niet de developer van de site of het thema bent, en je hebt geen codeervaardigheden, dan wil je waarschijnlijk contact opnemen met iemand met kennis van zaken. Rondneuzen in de bestanden van je thema kan een probleem veroorzaken.

De Mozilla documentatie over de fout geeft je echter twee aanwijzingen om je zoektocht te beginnen – twee ‘representatie headers’: Content-Type en Content-Encoding.

Hoe de headers Content-Type en Content-Encoding werken

De Content-Type header voorziet het clientverzoek van de resource voordat er gecodeerd wordt. Hij geeft het oorspronkelijke mediatype van de resource aan. Bijvoorbeeld:


Content-Type: text/html; charset=UTF-8

Content-Type: image/jpeg;

Content-Encoding daarentegen is een lijst van alle coderingen die de payload (d.w.z. je media) heeft, wat een indicator is van hoe het bestand gedecodeerd moet worden om de originele payload te krijgen.


Content-Encoding: gzip

Content-Encoding: br

Zoals je kunt zien, is bestandscompressie een gebruikelijke manier om gegevens te coderen. Dit is in theorie geen probleem, maar wel als je dit niet codeert in de relevante bestanden voor je thema of plugin.

Een oplossing vinden voor de HTTP 415 foutcode

Gezien het bovenstaande heb je drie mogelijkheden om te onderzoeken als je een HTTP 415 fout ontdekt – allemaal met betrekking tot je PHP code:

  • Je moet ervoor zorgen dat je de juiste Content-Type header waarde meestuurt.
  • Je wilt ook zeker weten dat de server kan verwerken wat je opgeeft voor de Content-Type header.
  • Controleer wat de server kan verwerken via de Accept header.

Je zult dit niet noodzakelijkerwijs doen binnen core bestanden, hoewel je dit wel kunt doen als onderdeel van een REST API verzoek. Een gebruiker van Stack Overflow had bijvoorbeeld precies dit probleem bij het gebruik van pure PHP over cURL om een API verzoek te doen.

Er zijn twee plaatsen om te zoeken. Allereerst geef je de juiste bestandstypen op in de Content-Type header:


$headers = array (

    ‘Content-Type’ => ‘application/json’,

   …

Ten tweede had deze gebruiker een typo bij het declaren van een ongeldige headersleutel met de functie wp_remote_post():


$arg = array (

    'header' => $headers,

    …

Omdat “header” een “s” mist, zou hij de “HTTP 415” foutmelding krijgen. Je wilt er echter ook voor zorgen dat de client de juiste bestandstypen kan accepteren. Dit doe je via een andere header: Accept. Bijvoorbeeld:


Accept: text/html

Accept: image/*

Dit zorgt ervoor dat beide uiteinden van de keten – de client- en de serverkant – de juiste bestandstypen kunnen accepteren en versturen, en maakt voorgoed een einde aan de “HTTP 415” foutmelding.

Samenvatting

Websitefouten zijn vaak eenvoudig op te lossen. We hebben dat al een aantal keren gedaan op de Kinsta blog, en de aard van het platform betekent dat je in korte tijd weer klaar bent om verder te gaan. De “HTTP 415” is echter anders, in die zin dat een oplossing moeilijk te vinden is als je geen ontwikkelaar bent.

De oplossing is werken met de Content-Type header waarden om er zeker van te zijn dat je de juiste naar de server stuurt. Ook kan het een kwestie zijn van een ongelukkige typo. Dit lijkt een “duh” moment, maar in dit geval kunnen ze lastig te ontdekken zijn, vooral als het gaat om de content typen die je naar de server stuurt.

Waar je er bij het oplossen van de “HTTP 415” fout alleen voor staat, staat Kinsta voor andere problemen met je website voor je klaar. Ons ondersteuningsteam staat klaar om je te helpen je site te begrijpen in de zeldzame gevallen dat hij niet laadt.