409

Conflict

Officiel
Der var en konflikt i Ressouce's nuværende tilstand

Specifikation af HTTP-statuskode 409

Statuskoden 409 Conflict angiver, at anmodningen ikke kunne gennemføres på grund af en konflikt med den aktuelle tilstand for målressourcen. Denne kode anvendes i situationer, hvor brugeren måske kan løse konflikten og sende anmodningen igen. Serveren SKAL generere en payload, der indeholder tilstrækkelige oplysninger til, at en bruger kan genkende kilden til konflikten.

Konflikter opstår oftest som svar på en PUT-anmodning. Hvis der f.eks. anvendes versionering, og den repræsentation, der PUT'es, indeholder ændringer til en ressource, som er i konflikt med dem, der er foretaget ved en tidligere (tredjeparts) anmodning, kan origin-serveren bruge et 409 Conflict-svar for at angive, at den ikke kan fuldføre anmodningen. I dette tilfælde ville svarrepræsentationen sandsynligvis indeholde oplysninger, der er nyttige til at slå forskellene sammen på grundlag af revisionshistorikken.

Kilde / citat fra: HTTP-statuskoden 409 Conflict er specificeret i afsnit 6.5.8 i RFC7231.

Hvordan får man en 409-statuskode med PHP?

Hvis du vil have HTTP-statuskoden 409 på en webside, kan du bruge PHP-funktionen http_response_code. Syntaksen er som følger: http_response_code(409) (PHP 5 >= 5.4.0, PHP 7, PHP 8)

Test 409 HTTP-statuskoden

For at kunne vise HTTP-statuskoden (i dette tilfælde 409 Conflict) og andre oplysninger på klientsiden skal udviklingskonsollen åbnes med F12. Naviger derefter til fanen "Network" (netværk). Nu kan siden åbnes, hjemmesiden (eksempel index.php) skal være synlig i fanen netværk. Denne skal vælges, og derefter skal Herder-sektionen vælges. Brugeren vil derefter se følgende resultat:

Statuskode 409 Conflict
Oversigt
URL: https://http-statuscode.com/errorCodeExample.php?code=409
Status: 409 Conflict
Disse: Network
IP-adresse: XX.XX.XX.XX
Statuskode 409 Conflict

Hvordan løser jeg problemet med 409-statuskoden?

Konfliktstatuskoden 409 Conflict indikerer, at den anmodning, klienten har sendt, er i konflikt med målressourcens aktuelle tilstand. Det kan f.eks. ske, når to klienter forsøger at opdatere den samme ressource på samme tid.

Årsager til 409 Conflict Conflict Status Code

  • Simultane opdateringer: Som tidligere nævnt er en almindelig årsag til en 409 Conflict-statuskode, at flere klienter forsøger at ændre en ressource på samme tid.
  • Inkonsistente data: Hvis en klient sender data, der ikke er i overensstemmelse med serverens forventede formaterings- eller valideringsregler, kan der returneres en 409 Conflict-statuskode.
  • Logiske konflikter: Selv når data er formateret korrekt, kan der opstå logiske konflikter. Et eksempel kunne være et reservationssystem, hvor to personer forsøger at booke det samme sæde på samme tid.

Trin til at løse 409 Conflict Conflict-statuskoden:

  • Validering af data: Sørg for, at de data, klienten sender, er korrekt formaterede og konsistente. Tjek serverens valideringsregler, og juster din anmodning i overensstemmelse hermed.
  • Implementer låsemekanismer: For systemer, hvor der er mulighed for samtidige opdateringer, kan en låsemekanisme være nyttig. Det forhindrer mere end én bruger i at foretage ændringer i en ressource på samme tid.
  • Implementering af versionskontrol: Ved at markere hver tilstand af en ressource med en version kan klienter sikre, at de altid arbejder med den nyeste version.
  • Feedback til brugeren: Når der opstår en 409 Conflict-konflikt, bør klienten informeres med en klar og forståelig fejlmeddelelse, så de ved, hvordan de skal fortsætte.
  • Gennemgå serverlogfiler: Ofte indeholder serverlogfiler yderligere oplysninger om årsagen til konflikten. Søgning i disse logfiler kan kaste lys over, præcis hvad problemet er.
  • Returlogik: I nogle tilfælde kan det være nyttigt automatisk at sende anmodningen igen, især hvis konflikten skyldes kortsigtede forhold, der hurtigt kan ændre sig.
.

Sådan opretter du din egen fejlside for statuskode 409

Det er relativt nemt at oprette din egen 409 Conflict-fejlside med både Apache- og NGINX-webservere.

Apache Webserver

Webserveren "Apache" er en af de mest almindelige webservere på internettet. For at oprette din egen 409 Conflict-fejlside i "Apache" skal du foretage følgende ændring i følgende fil.

File: .htaccess
ErrorDocument 409 /errors/409.html

NGINX Webserver

I lighed med webserveren "Apache" er "NGINX" også meget udbredt på internettet. For at oprette din egen 409 Conflict-fejlside i "NGINX" skal du foretage følgende ændring i følgende fil.

File: sites-enabled/default
error_page 409 /409.html;
location = /409.html {
    root /usr/share/nginx/html;
    internal;
}

Browserkompatibilitet for 409-statuskoden

Chrome no data
Edge no data
Firefox no data
Opera no data
Safari no data
Chrome Android no data
Firefox for Android no data
Opera Android no data
Safari on iOS no data
Internet no data
WebView Android no data

Konstanter i programmeringssprog

HttpStatusCode.Conflict
http.StatusConflict
Response::HTTP_CONFLICT
httplib.CONFLICT
http.client.CONFLICT
http.HTTPStatus.CONFLICT
:conflict
Forfatter: Tony Brüser
Forfatter: Tony Brüser

Tony Brüser er en entusiastisk webudvikler med en forkærlighed for HTTP-statuskoder.

LinkedInGitHub