Innehåll

    Serversvar 412 Precondition Failed

    Förstå status 412

    HTTP-statuskod 412 (Precondition Failed) indikerar att ett eller flera av de villkor som anges i begärans rubriker inte har uppfyllts. Denna kod är särskilt användbar för att implementera villkorliga begärningar, där klienten vill säkerställa att resursen inte har ändrats innan en operation utförs.

    412 - Precondition Failed

    Definition av kod 412

    Statuskod 412 används när servern inte kan uppfylla de specifika villkor som anges av klientens begäran. Detta kan bero på att den angivna resursen har ändrats sedan den senaste begäran.

    Villkor som leder till fel

    Fel 412 kan uppstå i följande situationer:

    • Resursens tillstånd har ändrats.
    • Angivna villkor i rubrikerna är inte uppfyllda.

    Exempel på rubriker som orsakar kod 412

    • If-Match: Kontrollera om resursens etag matchar det angivna värdet.
    • If-Unmodified-Since: Kontrollera om resursen har ändrats efter ett visst datum.

    Praktiska exempel på användning

    Exempel med rubriken If-Match

    I detta scenario vill klienten uppdatera en resurs endast om den har den förväntade etag. Om etag inte matchar, kommer servern att returnera en 412-statuskod.

    Exempel med rubriken If-Unmodified-Since

    Exempel med If-None-Match

    I detta fall begär klienten en resurs om den inte har ändrats sedan senaste begäran. Om resursen har ändrats, får klienten ett 412-fel.

    Åtgärda fel 412 på olika programmeringsspråk

    Åtgärda på Python

    Exempel på kod med hjälp av biblioteket requests:

    import requests
    
    response = requests.get('https://example.com/resource', headers={'If-Match': 'etag-value'})
    if response.status_code == 412:
        print("Förhandsvillkor misslyckades.")

    Åtgärda på JavaScript

    Användning av fetch API för att hantera status 412:

    fetch('https://example.com/resource', {
        method: 'GET',
        headers: {'If-Unmodified-Since': 'date-value'}
    })
    .then(response => {
        if (response.status === 412) {
            console.log("Förhandsvillkor misslyckades.");
        }
    });

    Åtgärda på Java

    Exempel med HttpURLConnection:

    import java.net.HttpURLConnection;
    import java.net.URL;
    
    URL url = new URL("https://example.com/resource");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");
    conn.setRequestProperty("If-None-Match", "etag-value");
    
    if (conn.getResponseCode() == 412) {
        System.out.println("Förhandsvillkor misslyckades.");
    }

    Jämförelse av beteende på olika plattformar

    Olika serverteknologier kan hantera status 412 på olika sätt, vilket kan påverka klientlogik och användarupplevelse (UX). Det är viktigt att förstå hur din valda plattform hanterar dessa förhandsvillkor för att undvika förvirring och fel vid användning.

    Diskussion om tillämpningen av status 412

    Status 412 är användbar i situationer där dataintegritet är avgörande, men det kan också leda till problem om det inte hanteras korrekt. Det är viktigt att överväga dess användning noga och förstå de begränsningar som kan förekomma.

    Rubrik Beskrivning
    If-Match Kontrollerar etag för att säkerställa att resursen inte har ändrats.
    If-Unmodified-Since Kontrollerar om resursen har ändrats efter ett visst datum.
    If-None-Match Kontrollerar om resursen har ändrats sedan senaste begäran.

    Tilläggskoder

    KodBeskrivning
    412.0Förutsättning misslyckades - Begäran innehåller en ogiltig If-Match-rubrik.