506

Variant Also Negotiates

Officiel
Slutpunktet forhandler sig selv

Generel forklaring af 506-statuskoden

HTTP-statuskode 506 Variant Also Negotiates er en indikator for et specifikt problem i en server, der opstår, når serveren er implementeret i en konfiguration, der bruger såkaldt transparent indholdsforhandling. Denne type indholdsforhandling bruges til at administrere forskellige versioner af en ressource, der kan leveres afhængigt af kravene fra den anmodende klient (f.eks. forskellige sprog, filformater eller kodninger).

I bund og grund betyder statuskoden 506 Variant Also Negotiates, at der er en fejlkonfiguration på serveren, der fører til en uendelig forhandlingsløkke. I stedet for at serveren vælger en bestemt version af den ønskede ressource baseret på klientens præferencer, henviser selve valget til endnu en forhandling. Resultatet er, at ingen af varianterne bliver leveret, fordi serveren er fanget i en cyklus af referencer, hvor en variant refererer til en anden, som igen refererer til en anden osv.

Et simpelt eksempel: En klient ønsker en webside på et bestemt sprog. Serveren har forskellige sprogversioner af hjemmesiden og forsøger at vælge den bedst egnede version. Men hvis konfigurationen af serveren er forkert, kan den proces, der skal vælge den bedst egnede version, i stedet henvise til en ny forhandlingsrunde i stedet for at foretage et endeligt valg. Statuskode 506 Variant Also Negotiates signalerer til klienten, at serveren ikke er i stand til at levere en passende version af ressourcen på grund af disse interne konflikter eller fejlkonfigurationer.

I praksis ses denne statuskode sjældent, fordi den forudsætter en meget specifik serverkonfiguration og fejltilstand. At løse problemet kræver en gennemgang og korrektion af serverkonfigurationen for at sikre, at indholdsforhandling kan udføres korrekt uden at gå ind i en uendelig løkke.

Specifikation af HTTP-statuskode 506

Statuskoden 506 Variant Also Negotiates angiver, at serveren har en intern konfigurationsfejl: Den valgte variantressource er konfigureret til selv at deltage i gennemsigtige indholdsforhandlinger og er derfor ikke et korrekt slutpunkt i forhandlingsprocessen.

Kilde / citat fra: HTTP-statuskoden 506 Variant Also Negotiates er specificeret i afsnit 8.1 i RFC2295.

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

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

Test 506 HTTP-statuskoden

For at kunne vise HTTP-statuskoden (i dette tilfælde 506 Variant Also Negotiates) 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 506 Variant Also Negotiates
Oversigt
URL: https://http-statuscode.com/errorCodeExample.php?code=506
Status: 506 Variant Also Negotiates
Disse: Network
IP-adresse: XX.XX.XX.XX
Statuskode 506 Variant Also Negotiates

Sådan opretter du din egen fejlside for statuskode 506

Det er relativt nemt at oprette din egen 506 Variant Also Negotiates-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 506 Variant Also Negotiates-fejlside i "Apache" skal du foretage følgende ændring i følgende fil.

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

NGINX Webserver

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

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

Browserkompatibilitet for 506-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

http.StatusVariantAlsoNegotiates
Response::HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL
:variant_also_negotiates
Forfatter: Tony Brüser
Forfatter: Tony Brüser

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

LinkedInGitHub