Inhoud

    Serverrespons 412 Precondition Failed

    Begrip van statuscode 412

    HTTP-statuscode 412 (Precondition Failed) geeft aan dat een of meer voorwaarden die zijn opgegeven in de headers van de aanvraag niet zijn vervuld. Dit kan nuttig zijn voor het implementeren van voorwaardelijke aanvragen, waarbij de cliënt wil bevestigen dat de bron niet is gewijzigd voordat een operatie wordt uitgevoerd.

    412 - Precondition Failed

    Voorwaarden die leiden tot een fout

    De foutmelding 412 kan optreden onder verschillende omstandigheden. De meest voorkomende zijn:

    • De opgegeven If-Match header komt niet overeen met de huidige versie van de bron.
    • De If-Unmodified-Since header geeft een datum aan die eerder is dan de laatste wijzigingsdatum van de bron.
    • De If-None-Match header bevat een waarde die niet overeenkomt met de huidige ETag van de bron.

    Voorbeelden van gebruik

    Voorbeeld met de header If-Match

    Stel je voor dat een cliënt een update van een bron wil uitvoeren, maar wil ervoor zorgen dat de versie die wordt bijgewerkt de verwachte versie is. De cliënt stuurt een verzoek met de volgende header:

    If-Match: "abc123"

    Als de huidige ETag van de bron echter "xyz789" is, zal de server een 412-statuscode retourneren, omdat de voorwaarden niet zijn vervuld.

    Voorbeeld met de header If-Unmodified-Since

    In een ander scenario wil een cliënt een bron bijwerken, maar alleen als deze niet is gewijzigd sinds een bepaalde datum. De header kan er als volgt uitzien:

    If-Unmodified-Since: Wed, 21 Oct 2015 07:28:00 GMT

    Als de bron echter is gewijzigd na deze datum, zal de server ook hier een 412-statuscode retourneren.

    Voorbeeld met If-None-Match

    Een cliënt vraagt informatie op met de If-None-Match header, die de ETag van de bron bevat. Dit kan bijvoorbeeld als volgt zijn:

    If-None-Match: "xyz789"

    Als de huidige ETag "xyz789" is, betekent dit dat de bron niet is gewijzigd, en de server zal een 304 Not Modified-status retourneren. Als de ETag echter anders is, kan de server een 412-statuscode terugsturen.

    Fout 412 verhelpen in verschillende programmeertalen

    Corrigeren in Python

    Hieronder volgt een voorbeeld van hoe je de fout 412 kunt afhandelen met de requests bibliotheek in Python:

    import requests
    
    response = requests.put('https://example.com/resource', headers={'If-Match': '"abc123"'})
    if response.status_code == 412:
        print('De voorwaarde is niet vervuld. De bron is mogelijk gewijzigd.')

    Corrigeren in JavaScript

    Bij gebruik van de fetch API in JavaScript kan de fout als volgt worden afgehandeld:

    fetch('https://example.com/resource', {
        method: 'PUT',
        headers: {
            'If-Match': '"abc123"'
        }
    }).then(response => {
        if (response.status === 412) {
            console.log('De voorwaarde is niet vervuld.');
        }
    });

    Corrigeren in Java

    In Java kan de HttpURLConnection worden gebruikt om de fout 412 als volgt te verwerken:

    import java.net.HttpURLConnection;
    import java.net.URL;
    
    URL url = new URL("https://example.com/resource");
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("PUT");
    connection.setRequestProperty("If-Match", "\"abc123\"");
    int responseCode = connection.getResponseCode();
    if (responseCode == 412) {
        System.out.println("De voorwaarde is niet vervuld.");
    }

    Vergelijking van gedrag op verschillende platforms

    Server Technologie Gedrag bij 412
    Apache Geeft 412 bij niet-overeenkomende If-Match headers.
    Nginx Verwerkt voorwaardelijke headers en retourneert 412 indien nodig.
    Node.js Kan 412 retourneren afhankelijk van middleware-configuratie.

    Toepassing van statuscode 412

    De statuscode 412 is nuttig in situaties waarin de integriteit van gegevens belangrijk is. Het is vooral relevant voor applicaties die samenwerking vereisen of waar gegevensconsistentie cruciaal is.

    Er zijn echter enkele beperkingen. Het gebruik van 412 kan leiden tot extra complexiteit in de client-logica, vooral wanneer meerdere voorwaarden moeten worden gecontroleerd. Dit kan ook gevolgen hebben voor de gebruikerservaring als de fout niet goed wordt afgehandeld.

    Aanvullende codes

    CodeBeschrijving
    412.0Voorwaarde mislukt - Het verzoek bevat een ongeldige If-Match-header.