506 Variant Also Negotiates
Der HTTP-Statuscode 506 Variant Also Negotiates
Server-Fehlerantwort wird während der Inhaltsaushandlung zurückgegeben, wenn es eine rekursive Schleife im Prozess der Ressourcenauswahl gibt.
Agentengesteuerte Inhaltsaushandlung ermöglicht es einem Client und einem Server gemeinsam zu entscheiden, welche Variante einer gegebenen Ressource am besten geeignet ist, wenn der Server mehrere Varianten hat. Ein Server sendet einen 506
Statuscode aufgrund einer Serverfehlkonfiguration, die zu zirkulären Referenzen bei der Erstellung von Antworten führt.
Der Mangel an Standardisierung dafür, wie Clients automatisch aus Antworten wählen, und die zusätzlichen Round-Trips, die die Client-Server-Interaktion verlangsamen, bedeuten, dass dieser Mechanismus selten verwendet wird. Servergesteuerte Inhaltsaushandlung ist weitaus verbreiteter, wobei ein Server direkt die am besten geeignete Ressource für den Client basierend auf den Anfrage-Headern (Accept-Language
, Accept
, etc.) auswählt.
Status
506 Variant Also Negotiates
Beispiele
Ressource mit Varianten
Im folgenden Beispiel fordert ein Client eine Seite in der fr
-Lokalisierung mittels des Accept-Language
Headers an.
Dies kann mit curl durchgeführt werden:
curl -H "Negotiate: trans" -H "Accept-Language: fr;" http://example.com/index
Dies erzeugt die folgende Anfrage:
GET /index HTTP/1.1
Host: example.com
User-Agent: curl/8.7.1
Accept: */*
Negotiate: trans
Accept-Language: fr
Aufgrund einer Serverfehlkonfiguration verweist die Variantenantwort für fr
auf eine Typkarte, die selbst eine transparente Aushandlung verursacht. Der Server kann diesen Zustand anhand des Vorhandenseins eines TCN
Headers in einer Auswahlantwort erkennen, bevor sie gesendet wird:
HTTP/1.1 506 Variant Also Negotiates
Date: Mon, 22 Jul 2024 10:00:00 GMT
Server: Apache/2.4.41 (Unix)
Content-Type: text/html; charset=UTF-8
Content-Length: 233
TCN: list
Vary: negotiate,accept-language
Alternates: {"index.html.en" 1 {type text/html} {language en} {length 48}}, {"another-map.html.fr.map" 1 {type text/html} {language fr} {length 45}}}}
<html>
<head>
<title>506 Variant Also Negotiates</title>
</head>
<body>
<h1>Variant Also Negotiates</h1>
<p>A variant for the requested resource is itself a negotiable resource. This indicates a configuration error.</p>
</body>
</html>
Spezifikationen
Specification |
---|
RFC 2295 # section-8.1 |
Siehe auch
300 Multiple Choices
- RFC 2295
- Inhaltsaushandlung
- HTTP-Antwortstatuscodes
- Inhaltsaushandlung in der Apache HTTP Server-Dokumentation
- Apache httpd
mod_negotiation.c
Quellcode, der Bedingungen zeigt, dieHTTP_VARIANT_ALSO_VARIES
Antwort auslösen.