409
Conflict
Specifikation av HTTP-statuskoden 409
Statuskoden 409 Conflict anger att begäran inte kunde slutföras på grund av en konflikt med målresursens aktuella tillstånd. Denna kod används i situationer där användaren kan lösa konflikten och skicka in begäran på nytt. Servern SKA generera en nyttolast som innehåller tillräckligt med information för att en användare ska kunna känna igen källan till konflikten.
Konflikter är mest sannolika att uppstå som svar på en PUT-förfrågan. Om versionshantering används och den representation som PUT:erna innehåller ändringar av en resurs som står i konflikt med de ändringar som gjorts i en tidigare begäran (från en tredje part), kan ursprungsservern använda ett 409 Conflict-svar för att ange att den inte kan slutföra begäran. I det här fallet skulle svarsrepresentationen troligen innehålla information som är användbar för att slå samman skillnaderna baserat på revisionshistoriken.
Källa / Citat från: HTTP-statuskoden 409 Conflict anges i avsnitt 6.5.8 i RFC7231.
HTTP-protokoll
Hur skickar man en 409-statuskod med PHP?
För att kasta HTTP-statuskoden 409 på en webbsida kan PHP-funktionen http_response_code användas. Syntaxen är följande: http_response_code(409) (PHP 5 >= 5.4.0, PHP 7, PHP 8)
Testa HTTP-statuskoden 409
För att kunna visa HTTP-statuskoden (i det här fallet 409 Conflict) och annan information på klientsidan måste utvecklingskonsolen öppnas med F12. Navigera sedan till fliken "Network" (nätverk). Nu kan sidan öppnas, webbplatsen (exempel index.php) ska vara synlig i fliken nätverk. Denna måste väljas och sedan måste avsnittet Herder väljas. Användaren kommer då att se följande resultat:
URL: https://http-statuscode.com/errorCodeExample.php?code=409
Status: 409 Conflict
Dessa: Network
IP-adress: XX.XX.XX.XX
Hur löser jag problemet med statuskoden 409?
Conflict Status Code 409 Conflict anger att den begäran som skickas av klienten är i konflikt med målresursens aktuella tillstånd. Detta kan till exempel hända när två klienter försöker uppdatera samma resurs samtidigt.
Årsaker till statuskod för konflikt 409 Conflict
- Samtidiga uppdateringar: Som tidigare nämnts är en vanlig orsak till en statuskod 409 Conflict att flera klienter försöker ändra en resurs samtidigt.
- Inkonsistenta data: Om en klient skickar data som inte överensstämmer med serverns förväntade formaterings- eller valideringsregler kan en 409 Conflict-statuskod returneras.
- Logiska konflikter: Även när data är korrekt formaterade kan logiska konflikter uppstå. Ett exempel är ett bokningssystem där två personer försöker boka samma plats samtidigt.
Steg för att lösa statuskoden 409 Conflict Conflict:
- Validering av data: Se till att de data som skickas av klienten är korrekt formaterade och konsekventa. Kontrollera de valideringsregler som servern tillhandahåller och justera din begäran därefter.
- Implementera låsmekanismer: För system där det finns möjlighet till samtidiga uppdateringar kan en låsmekanism vara användbar. Detta förhindrar att mer än en användare kan göra ändringar i en resurs samtidigt.
- Implementera versionskontroller: Genom att markera varje tillstånd i en resurs med en version kan klienter säkerställa att de alltid arbetar med den senaste versionen.
- Tillbaka till användaren: När en 409 Conflict-konflikt uppstår bör klienten informeras med ett tydligt och begripligt felmeddelande så att de vet hur de ska gå vidare.
- Granska serverloggar: Serverloggar innehåller ofta ytterligare information om orsaken till konflikten. Att söka i dessa loggar kan kasta ljus över exakt vad problemet är.
- Returlogik: I vissa fall kan det vara användbart att automatiskt skicka begäran igen, särskilt om konflikten orsakas av kortsiktiga förhållanden som snabbt kan förändras.
Så här skapar du en egen felsida för statuskoden 409
Apache Webserver
Webbservern "Apache" är en av de vanligaste webbservrarna på Internet. För att skapa en egen 409 Conflict-felsida i "Apache" måste följande ändring göras i följande fil.
NGINX Webserver
I likhet med webbservern Apache används NGINX i stor utsträckning på Internet. För att skapa en egen 409 Conflict-felsida i "NGINX" måste följande ändring göras i följande fil.
location = /409.html {
root /usr/share/nginx/html;
internal;
}
Webbläsarnas kompatibilitet med statuskoden 409
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 programmeringsspråk
HttpStatusCode.Conflict
http.StatusConflict
Response::HTTP_CONFLICT
httplib.CONFLICT
http.client.CONFLICT
http.HTTPStatus.CONFLICT
:conflict