Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
300 Multiple Choices
Le code de statut deréponse de redirection HTTP300 Multiple Choices indique que la requête a plusieurs réponses possibles.L'agent utilisateur ou l'utilisateur·ice doit en choisir une.
Note :Lors de lanégociation de contenu pilotée par l'agent, un client et un serveur décident ensemble de la meilleure variante d'une ressource donnée lorsque le serveur possède plusieurs variantes.La plupart des clients n'ont pas de méthode pour choisir automatiquement parmi les réponses, et les allers-retours supplémentaires ralentissent l'interaction client-serveur.Lanégociation de contenu pilotée par le serveur est bien plus courante, le serveur choisissant la ressource la plus appropriée pour le client en fonction des en-têtes de la requête (Accept-Language,Accept, etc.).
Le serveur doit inclure dans la réponse un contenu contenant une liste de métadonnées de ressources et d'URI parmi lesquels l'utilisateur·ice ou l'agent utilisateur peut choisir.Le format du contenu dépend de l'implémentation, mais doit pouvoir être facilement analysé par l'agent utilisateur (comme du HTML ou du JSON).
Si le serveur a un choix préféré que le client doit demander, il peut l'indiquer dans un en-têteLocation.
Dans cet article
Statut
300 Multiple ChoicesExemples
>Réponse 300 avec liste de ressources
L'exemple suivant illustre un échange requête-réponse de négociation de contenu transparente.Un serveur Apache propose plusieurs variantes d'une ressource définie dans unecarte de types(angl.) ;index.html.en pour une ressource en anglais, etindex.html.fr pour une version française :
URI: index.html.enContent-Language: enURI: index.html.frContent-Language: frUn en-tête de requêteNegotiate: trans indique que le client souhaite utiliser TCN pour choisir une ressource.Le faible support de ce mécanisme par les navigateurs signifie qu'un agent utilisateur comme curl doit être utilisé à la place :
curl -v -H "Negotiate: trans" http://localhost/indexCela produit la requête suivante :
GET /index HTTP/1.1Host: localhostUser-Agent: curl/8.7.1Accept: */*Negotiate: transOn reçoit une réponse300 avec les détails des différentes représentations de la ressource demandée :
HTTP/1.1 300 Multiple ChoicesDate: Fri, 30 Aug 2024 09:21:48 GMTServer: Apache/2.4.59 (Unix)Alternates: {"index.html.en" 1 {type text/html} {language en} {length 48}}, {"index.html.fr" 1 {type text/html} {language fr} {length 45}}Vary: negotiate,accept-languageTCN: listContent-Length: 419Content-Type: text/html; charset=iso-8859-1<html><head><title>300 Multiple Choices</title></head><body><h1>Choix multiples</h1>Variantes disponibles :<ul><li><a href="index.html.en">index.html.en</a> , type text/html, language en</li><li><a href="index.html.fr">index.html.fr</a> , type text/html, language fr</li></ul></body></html>Spécifications
| Specification |
|---|
| HTTP Semantics> # status.300> |
Voir aussi
- Les redirections en HTTP
- Les codes de statut de réponse HTTP
- Le code de statut HTTP
301 Moved Permanently - Le code de statut HTTP
302 Foundredirection temporaire - Le code de statut HTTP
308 Permanent Redirect - Le code de statut HTTP
506 Variant Also Negotiates - Algorithme de négociation du serveur Apache(angl.)
- RFC 2295: Négociation de contenu transparente dans HTTP