Inhalt

    Serverantwort 406 Not Acceptable

    HTTP-Statuscode 406: Not Acceptable

    Der HTTP-Statuscode 406 tritt auf, wenn der Server nicht in der Lage ist, eine Antwort im vom Client angeforderten Format bereitzustellen. Dies geschieht häufig aufgrund von Problemen mit den im Accept-Header angegebenen Formaten oder weil der Server das angeforderte Format nicht unterstützt.

    406 - Not Acceptable

    Definition und Ursachen

    • Definition: Der Statuscode 406 signalisiert, dass der Server die Anfrage des Clients nicht erfüllen kann, da keine akzeptablen Formate vorhanden sind.
    • Hauptursachen:
      • Ungültige Accept-Header im Anfrage.
      • Fehlende Unterstützung des angeforderten Formats auf dem Server.
      • Falsche Konfiguration des Servers oder der API.

    Typische Situationen

    Clients können auf den Statuscode 406 in verschiedenen Szenarien stoßen:

    1. Wenn eine Bilddatei in einem nicht unterstützten Format angefordert wird.
    2. Bei der Anforderung eines Textdokuments mit einem ungültigen Format.
    3. Wenn ein falscher Accept-Header im HTTP-Request verwendet wird.

    Unterschiede zu anderen Statuscodes

    Statuscode Bedeutung Unterschied zu 406
    406 Not Acceptable Server unterstützt das angeforderte Format nicht.
    415 Unsupported Media Type Der Server kann die Anfrage aufgrund eines unzulässigen Medientyps nicht verarbeiten.

    Praktische Beispiele

    Beispiel 1: Fehlermeldung bei Bildanfrage

    Ein Client versucht, ein Bild im TIFF-Format anzufordern, während der Server nur JPEG und PNG unterstützt. Der Server gibt den Statuscode 406 zurück.

    Beispiel 2: Anfrage eines Textdokuments

    Ein Client sendet eine Anfrage nach einem Textdokument und spezifiziert Accept: application/vnd.example+xml, aber der Server unterstützt nur application/json. Auch hier erfolgt eine Rückgabe des Statuscodes 406.

    Beispiel 3: Falscher Accept-Header

    Wenn ein Client den Header Accept: text/ sendet, während die API nur application/json zurückgeben kann, wird der Server mit einem 406-Status antworten.

    Fehlerbehebung in verschiedenen Programmiersprachen

    JavaScript (Node.js)

    
    const express = require('express');
    const app = express();
    
    app.get('/image', (req, res) => {
        if (!req.headers.accept.includes('image/png')) {
            return res.status(406).send('Not Acceptable');
        }
        res.send('Bild im PNG-Format');
    });
    

    Um den Fehler 406 zu beheben, sollte der Accept-Header überprüft und korrekt eingestellt werden.

    Python (Flask)

    
    from flask import Flask, request, jsonify
    
    app = Flask(__name__)
    
    @app.route('/document', methods=['GET'])
    def get_document():
        if 'application/json' not in request.headers.get('Accept', ''):
            return 'Not Acceptable', 406
        return jsonify({'message': 'Dokument im JSON-Format'})
    

    Hier sollte sichergestellt werden, dass das gewünschte Format unterstützt wird.

    PHP

    
    if (strpos($_SERVER['HTTP_ACCEPT'], 'application/xml') === false) {
        http_response_code(406);
        echo 'Not Acceptable';
        exit;
    }
    echo 'XML-Daten';
    

    In PHP kann der Header Accept angepasst werden, um die gewünschte Antwort zu erhalten.

    Empfehlungen zur Vermeidung von Statuscode 406

    • Überprüfen Sie die Accept-Header vor dem Senden der Anfrage.
    • Stellen Sie sicher, dass der Server verschiedene Antwortformate unterstützt.
    • Testen Sie die API regelmäßig mit verschiedenen Anfrageparametern.

    Praktische Anwendung des Statuscodes 406

    Der Statuscode 406 kann für Entwickler nützlich sein, um zu verstehen, welche Formate vom Server unterstützt werden. Für Benutzer von APIs ist es wichtig zu wissen, wie sie Fehler beheben können, um korrekt mit dem Server zu kommunizieren.

    Diskussion

    Die korrekte Handhabung der Accept-Header ist entscheidend, um den Statuscode 406 zu vermeiden. Es ist ratsam, die Kommunikation zwischen Client und Server zu verbessern, um eine reibungslose Interaktion zu gewährleisten.

    Zusätzliche Codes

    CodeBeschreibung
    406.0Nicht akzeptabel - Der angeforderte MIME-Typ ist nicht akzeptabel.