506
Variant Also Negotiates
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
Källa / Citat från: HTTP-statuskoden 506 Variant Also Negotiates anges i avsnitt 8.1 i RFC2295.
HTTP-protokoll
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:
URL: https://http-statuscode.com/errorCodeExample.php?code=506
Status: 506 Variant Also Negotiates
Dessa: Network
IP-adress: XX.XX.XX.XX
Så här skapar du en egen felsida för statuskoden 506
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.
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.
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