Algemene uitleg van de 506-statuscode
De HTTP-statuscode 506 Variant Also Negotiates is een indicator van een specifiek probleem binnen een server dat optreedt wanneer de server wordt ingezet in een configuratie die gebruikmaakt van zogenaamde transparante inhoudsonderhandeling. Dit type inhoudsonderhandeling wordt gebruikt om verschillende versies van een bron te beheren die kunnen worden geleverd afhankelijk van de vereisten van de aanvragende client (bijvoorbeeld verschillende talen, bestandsindelingen of coderingen).
In wezen betekent de 506 Variant Also Negotiates statuscode dat er sprake is van een verkeerde configuratie op de server die leidt tot een oneindige onderhandelingslus. In plaats van dat de server een specifieke versie van de aangevraagde bron selecteert op basis van de voorkeuren van de client, verwijst de selectie zelf naar een andere onderhandeling. Het resultaat is dat geen van de varianten wordt geleverd, omdat de server verstrikt raakt in een cyclus van verwijzingen, waarbij de ene variant verwijst naar de andere, die op zijn beurt verwijst naar een andere, enzovoort.
Een eenvoudig voorbeeld: een client wil een webpagina in een specifieke taal. De server heeft verschillende taalversies van de website en probeert de meest geschikte versie te selecteren. Als de configuratie van de server echter onjuist is, kan het proces dat de meest geschikte versie moet selecteren, in plaats van een definitieve selectie te maken, verwijzen naar een andere onderhandelingsronde. De 506 Variant Also Negotiates-statuscode geeft aan de client aan dat de server geen geschikte versie van de bron kan leveren vanwege deze interne conflicten of verkeerde configuraties.
In de praktijk wordt deze statuscode zelden gezien, omdat deze uitgaat van een zeer specifieke serverconfiguratie en foutconditie. Om het probleem op te lossen, moet de serverconfiguratie worden herzien en gecorrigeerd om ervoor te zorgen dat inhoudonderhandeling correct kan worden uitgevoerd zonder in een oneindige lus terecht te komen.
Specificatie van de HTTP-statuscode 506
Bron / Citaat van: De 506 Variant Also Negotiates HTTP-statuscode wordt gespecificeerd door sectie 8.1 van RFC2295.
HTTP-protocol
Hoe gooi je een 506-statuscode met PHP?
Om de HTTP-statuscode 506 op een webpagina te gooien, kan de PHP-functie http_response_code worden gebruikt. De syntaxis is als volgt: http_response_code(506) (PHP 5 >= 5.4.0, PHP 7, PHP 8)
Test de HTTP-statuscode 506
Om de HTTP-statuscode (in dit geval 506 Variant Also Negotiates) en andere informatie aan de clientzijde te kunnen weergeven, moet de ontwikkelconsole worden geopend met F12. Navigeer vervolgens naar het tabblad "Netwerk". Nu kan de pagina worden geopend, de website (voorbeeld index.php) moet zichtbaar zijn in het netwerk tabblad. Deze moet worden geselecteerd en vervolgens moet het onderdeel Herder worden geselecteerd. De gebruiker ziet dan het volgende resultaat:
URL: https://http-statuscode.com/errorCodeExample.php?code=506
Status: 506 Variant Also Negotiates
Die: Network
IP-adres: XX.XX.XX.XX
Hoe maak je je eigen foutpagina voor de statuscode 506?
Apache Webserver
De webserver "Apache" is een van de meest gebruikte webservers op het internet. Om uw eigen 506 Variant Also Negotiates-foutpagina in "Apache" te maken, moet de volgende wijziging worden aangebracht in het volgende bestand.
NGINX Webserver
Net als de webserver "Apache" wordt ook "NGINX" veel gebruikt op het internet. Om uw eigen 506 Variant Also Negotiates-foutpagina in "NGINX" te maken, moet de volgende wijziging worden aangebracht in het volgende bestand.
location = /506.html {
root /usr/share/nginx/html;
internal;
}
Browsercompatibiliteit van de 506-statuscode
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 |
Constanten in programmeertalen
http.StatusVariantAlsoNegotiates
Response::HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL
:variant_also_negotiates