Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

506 Variant Also Negotiates

Le code de statut de réponse d'erreur serveur HTTP 506 Variant Also Negotiates est retourné lors de la négociation de contenu lorsqu'il y a une boucle récursive dans le processus de sélection d'une ressource.

La négociation de contenu pilotée par l'agent permet à un client et un serveur de décider ensemble de la meilleure variante d'une ressource donnée lorsque le serveur dispose de plusieurs variantes. Un serveur envoie un code d'état 506 en raison d'une mauvaise configuration du serveur qui entraîne des références circulaires lors de la création des réponses.

Le manque de normalisation sur la façon dont les clients choisissent automatiquement parmi les réponses, et les allers-retours supplémentaires qui ralentissent l'interaction client-serveur, font que ce mécanisme est rarement utilisé. La négociation de contenu pilotée par le serveur est beaucoup plus courante, où un serveur choisit directement la ressource la plus appropriée pour le client en fonction des en-têtes de la requête (Accept-Language, Accept, etc.).

Statut

http
506 Variant Also Negotiates

Exemples

Ressource avec variantes

Dans l'exemple suivant, un client demande une page en langue fr en utilisant l'en-tête Accept-Language. Cela peut être réalisé avec curl :

bash
curl  -H "Negotiate: trans" -H "Accept-Language: fr;" http://exemple.com/index

Cela produit la requête suivante :

http
GET /index HTTP/1.1
Host: exemple.com
User-Agent: curl/8.7.1
Accept: */*
Negotiate: trans
Accept-Language: fr

En raison d'une mauvaise configuration du serveur, la réponse variante pour fr pointe vers une carte de type (angl.) qui provoque elle-même une négociation transparente. Le serveur peut détecter cette condition par la présence d'un en-tête TCN dans une réponse de choix avant qu'elle ne soit envoyée :

http
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>La variante négocie également</h1>
  <p>Une variante de la ressource demandée est elle-même une ressource négociable. Cela indique une erreur de configuration.</p>
</body>
</html>

Spécifications

Specification
RFC 2295
# section-8.1

Voir aussi