506

Variant Also Negotiates

Offisiell
Sluttpunktet forhandler seg selv

Generell forklaring av 506-statuskoden

HTTP-statuskode 506 Variant Also Negotiates er en indikator på et spesifikt problem på en server som oppstår når serveren er implementert i en konfigurasjon som bruker såkalt transparent innholdsforhandling. Denne typen innholdsforhandling brukes til å håndtere ulike versjoner av en ressurs som kan leveres avhengig av kravene til den forespørrende klienten (f.eks. ulike språk, filformater eller kodinger).

Statuskoden 506 Variant Also Negotiates betyr i hovedsak at det er en feilkonfigurasjon på serveren som fører til en uendelig forhandlingssløyfe. I stedet for at serveren velger en spesifikk versjon av den forespurte ressursen basert på klientens preferanser, henviser selve valget til en ny forhandling. Resultatet er at ingen av variantene blir levert fordi serveren er fanget i en referansesyklus der én variant refererer til en annen, som igjen refererer til en annen, og så videre.

Et enkelt eksempel: En klient ønsker en nettside på et bestemt språk. Serveren har ulike språkversjoner av nettstedet og prøver å velge den versjonen som passer best. Men hvis konfigurasjonen av serveren er feil, kan prosessen som skal velge den best egnede versjonen, i stedet henvise til en ny forhandlingsrunde i stedet for å gjøre et endelig valg. Statuskoden 506 Variant Also Negotiates signaliserer til klienten at serveren ikke er i stand til å levere en passende versjon av ressursen på grunn av slike interne konflikter eller feilkonfigurasjoner.

I praksis ser man sjelden denne statuskoden fordi den forutsetter en svært spesifikk serverkonfigurasjon og feiltilstand. For å løse problemet er det nødvendig å gjennomgå og korrigere serverkonfigurasjonen for å sikre at innholdsforhandlingene kan utføres korrekt uten å gå inn i en uendelig sløyfe.

Spesifikasjon av HTTP-statuskoden 506

Statuskoden 506 Variant Also Negotiates indikerer at serveren har en intern konfigurasjonsfeil: den valgte variantressursen er konfigurert til å delta i transparent innholdsforhandling selv, og er derfor ikke et riktig endepunkt i forhandlingsprosessen.

Kilde / Sitat fra: 506 Variant Also Negotiates HTTP-statuskoden er spesifisert av seksjon 8.1 i RFC2295.

Hvordan kaste en 506-statuskode med PHP?

For å kaste HTTP-statuskoden 506 på en nettside kan PHP-funksjonen http_response_code brukes. Syntaksen er som følger: http_response_code(506) (PHP 5 >= 5.4.0, PHP 7, PHP 8)

Test 506 HTTP-statuskoden

For å kunne vise HTTP-statuskoden (i dette tilfellet 506 Variant Also Negotiates) og annen informasjon på klientsiden, må utviklingskonsollen åpnes med F12. Naviger deretter til fanen "Nettverk". Nå kan siden åpnes, nettstedet (eksempel index.php) skal være synlig i nettverksfanen. Dette må velges, og deretter må Herder-delen velges. Brukeren vil da se følgende resultat:

Statuskode 506 Variant Also Negotiates
Oversikt
URL: https://http-statuscode.com/errorCodeExample.php?code=506
Status: 506 Variant Also Negotiates
De: Network
IP-adresse: XX.XX.XX.XX
Statuskode 506 Variant Also Negotiates

Slik oppretter du din egen feilside for statuskode 506

Det er relativt enkelt å lage din egen 506 Variant Also Negotiates-feilside med både "Apache" og "NGINX" webservere.

Apache Webserver

Webserveren "Apache" er en av de vanligste webserverne på Internett. For å lage din egen 506 Variant Also Negotiates-feilside i "Apache", må følgende endring gjøres i følgende fil.

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

NGINX Webserver

I likhet med webserveren "Apache" er "NGINX" også mye brukt på Internett. For å lage din egen 506 Variant Also Negotiates-feilside i "NGINX", må følgende endring gjøres i følgende fil.

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

Nettleserkompatibilitet 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 programmeringsspråk

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 webutvikler med en forkjærlighet for HTTP-statuskoder.

LinkedInGitHub