Serverrespons 406 Not Acceptable
Wat is statuscode 406
Statuscode 406 (Not Acceptable) geeft aan dat de server niet in staat is om een reactie te bieden in een formaat dat de client heeft aangegeven in de 'Accept'-header. Dit kan het gevolg zijn van verschillende factoren, waaronder onjuiste headers in het verzoek of het ontbreken van ondersteuning voor het gevraagde formaat aan de serverzijde.
Definitie en belangrijkste oorzaken van optreden
De 406-statuscode komt voor wanneer de server niet kan voldoen aan de eisen van de client met betrekking tot het type gegevens dat moet worden geretourneerd. Dit kan zich voordoen in situaties waarin de client specifieke formaten voor de respons heeft opgegeven, maar de server deze formaten niet kan genereren of ondersteunen.
Situaties waarin de client dit code kan tegenkomen
- Bij het opvragen van een afbeelding in een niet-ondersteund formaat.
- Bij het opvragen van een document met een onjuist opgegeven formaat.
- Wanneer de 'Accept'-header verkeerd is ingesteld, wat leidt tot incompatibiliteit met de server.
Verschil met andere statuscodes
Het is belangrijk om het verschil tussen statuscode 406 en andere vergelijkbare statuscodes te begrijpen, zoals 415 (Unsupported Media Type). Terwijl 406 aangeeft dat het gevraagde formaat niet acceptabel is, betekent 415 dat het formaat dat de client probeert te verzenden niet wordt ondersteund door de server.
Statuscode | Bedeuting |
---|---|
406 | Niet acceptabel; de server kan geen respons geven in het gevraagde formaat. |
415 | Niet ondersteund media-type; de server accepteert het verzonden formaat niet. |
Praktische voorbeelden
Voorbeeld 1: Fout bij het opvragen van een afbeelding
Stel dat een client een afbeelding in het formaat 'image/webp' probeert op te vragen, maar de server ondersteunt alleen 'image/jpeg' en 'image/png'. In dit geval zal de server reageren met statuscode 406.
Voorbeeld 2: Fout bij het opvragen van een tekstdocument
Een client probeert een tekstdocument op te vragen met de 'Accept'-header ingesteld op 'application/pdf', terwijl de server alleen 'text/plain' en 'application/json' ondersteunt. Dit resulteert ook in een 406-statuscode.
Voorbeeld 3: Onjuiste 'Accept'-header
Wanneer een client een API aanroept met een 'Accept'-header zoals 'application/xml, application/json;q=0.8', maar de server ondersteunt alleen 'text/', kan dit leiden tot een 406-fout.
Fouten corrigeren in verschillende programmeertalen
JavaScript (Node.js)
Hier is een voorbeeld van code die een 406-fout kan genereren:
const express = require('express');
const app = express();
app.get('/data', (req, res) => {
res.status(406).send('Not Acceptable');
});
Oplossing: Controleer en stel de 'Accept'-header correct in voordat je het verzoek verzendt.
Python (Flask)
Een voorbeeld van een API-aanroep die een 406-status kan retourneren:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/data')
def data():
return jsonify({'error': 'Not Acceptable'}), 406
Oplossing: Voeg ondersteuning toe voor het benodigde responsformaat.
PHP
Hier is een voorbeeld van een PHP-code die een 406-fout kan veroorzaken:
header('HTTP/1.1 406 Not Acceptable');
echo 'Not Acceptable';
Oplossing: Pas de headers aan of configureer de routes om de gewenste formaten te ondersteunen.
Aanbevelingen ter voorkoming van statuscode 406
- Controleer de 'Accept'-headers voordat je het verzoek indient.
- Configureer de server om verschillende responsformaten te ondersteunen.
- Voer tests uit met verschillende verzoekparameters om de compatibiliteit te waarborgen.
Praktisch gebruik van statuscode 406
Deze statuscode kan nuttig zijn voor ontwikkelaars, omdat het hen helpt te begrijpen waarom een verzoek mislukt is. Het biedt ook richtlijnen voor API-gebruikers om hun verzoeken te corrigeren en te optimaliseren.
Het is cruciaal om de 'Accept'-headers correct te verwerken. Dit verhoogt de kans op succesvolle interacties tussen de client en de server en minimaliseert de kans op fouten zoals statuscode 406.
Aanvullende codes
Code | Beschrijving |
---|---|
406.0 | Niet acceptabel - Het gevraagde MIME-type is niet acceptabel. |