506

Variant Also Negotiates

Officiell
Slutpunkten förhandlar sig själv

Allmän förklaring av statuskoden 506

HTTP-statuskoden 506 Variant Also Negotiates är en indikator på ett specifikt problem inom en server som uppstår när servern är distribuerad i en konfiguration som använder så kallad transparent innehållsförhandling. Denna typ av innehållsförhandling används för att hantera olika versioner av en resurs som kan levereras beroende på kraven från den begärande klienten (t.ex. olika språk, filformat eller kodningar).

I huvudsak innebär statuskoden 506 Variant Also Negotiates att det finns en felkonfiguration på servern som leder till en oändlig loop av förhandling. Istället för att servern väljer en specifik version av den begärda resursen baserat på klientens preferenser, hänvisar själva valet till en annan förhandling. Resultatet blir att ingen av varianterna levereras eftersom servern är fångad i en cykel av referenser, där en variant refererar till en annan, som i sin tur refererar till en annan, och så vidare.

Ett enkelt exempel: En klient vill ha en webbsida på ett visst språk. Servern har olika språkversioner av webbplatsen och försöker välja den lämpligaste versionen. Men om konfigurationen av servern är felaktig kan den process som är tänkt att välja den lämpligaste versionen istället hänvisa till en ny förhandlingsrunda istället för att göra ett definitivt val. Statuskoden 506 Variant Also Negotiates signalerar till klienten att servern inte kan leverera en lämplig version av resursen på grund av dessa interna konflikter eller felkonfigurationer.

I praktiken ses denna statuskod sällan eftersom den förutsätter en mycket specifik serverkonfiguration och feltillstånd. För att lösa problemet krävs en granskning och korrigering av serverkonfigurationen för att säkerställa att innehållsförhandling kan utföras korrekt utan att hamna i en oändlig loop.

Specifikation av HTTP-statuskoden 506

Statuskoden 506 Variant Also Negotiates visar att servern har ett internt konfigurationsfel: den valda variantresursen är konfigurerad för att själv delta i transparenta innehållsförhandlingar och är därför inte en lämplig slutpunkt i förhandlingsprocessen.

Källa / Citat från: HTTP-statuskoden 506 Variant Also Negotiates anges i avsnitt 8.1 i RFC2295.

Hur skickar man en 506-statuskod med PHP?

För att kasta HTTP-statuskoden 506 på en webbsida kan PHP-funktionen http_response_code användas. Syntaxen är följande: http_response_code(506) (PHP 5 >= 5.4.0, PHP 7, PHP 8)

Testa HTTP-statuskoden 506

För att kunna visa HTTP-statuskoden (i det här fallet 506 Variant Also Negotiates) 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:

Statuskod 506 Variant Also Negotiates
Översikt
URL: https://http-statuscode.com/errorCodeExample.php?code=506
Status: 506 Variant Also Negotiates
Dessa: Network
IP-adress: XX.XX.XX.XX
Statuskod 506 Variant Also Negotiates

Så här skapar du en egen felsida för statuskoden 506

Det är relativt enkelt att skapa en egen 506 Variant Also Negotiates-felsida med både Apache- och NGINX-webbservrarna.

Apache Webserver

Webbservern "Apache" är en av de vanligaste webbservrarna på Internet. För att skapa en egen 506 Variant Also Negotiates-felsida i "Apache" måste följande ändring göras i följande fil.

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

NGINX Webserver

I likhet med webbservern Apache används NGINX i stor utsträckning på Internet. För att skapa en egen 506 Variant Also Negotiates-felsida i "NGINX" måste följande ändring göras i följande fil.

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

Webbläsarnas kompatibilitet med statuskoden 506

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

http.StatusVariantAlsoNegotiates
Response::HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL
:variant_also_negotiates

Underhållande memes om HTTP-statuskoden 506

Författare: Tony Brüser
Författare: Tony Brüser

Tony Brüser är en entusiastisk webbutvecklare med en förkärlek för HTTP-statuskoder.

LinkedInGitHub