Blame docs/manual/content-negotiation.html.fr.utf8

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
Packit 90a5c9
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
Packit 90a5c9
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
              This file is generated from xml source: DO NOT EDIT
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
      -->
Packit 90a5c9
<title>Négociation de contenu - Serveur HTTP Apache Version 2.4</title>
Packit 90a5c9
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
Packit 90a5c9
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
Packit 90a5c9
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
Packit 90a5c9
<script src="./style/scripts/prettify.min.js" type="text/javascript">
Packit 90a5c9
</script>
Packit 90a5c9
Packit 90a5c9
<link href="./images/favicon.ico" rel="shortcut icon" /></head>
Packit 90a5c9
<body id="manual-page">
Packit 90a5c9

Modules | Directives | FAQ | Glossaire | Plan du site

Packit 90a5c9

Serveur HTTP Apache Version 2.4

Packit 90a5c9
Packit 90a5c9
<-
Packit 90a5c9
Packit 90a5c9
Apache > Serveur HTTP > Documentation > Version 2.4

Négociation de contenu

Packit 90a5c9
Packit 90a5c9

Langues Disponibles:  en  |

Packit 90a5c9
 fr  |
Packit 90a5c9
 ja  |
Packit 90a5c9
 ko  |
Packit 90a5c9
 tr 

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
    

Apache HTTPD supporte la négociation de

Packit 90a5c9
    contenu telle qu'elle est décrite
Packit 90a5c9
    dans la spécification HTTP/1.1. Il peut choisir la meilleure représentation
Packit 90a5c9
    d'une ressource en fonction des préférences du navigateur pour ce qui
Packit 90a5c9
    concerne le type de media, les langages, le jeu de caractères et son
Packit 90a5c9
    encodage. Il implémente aussi quelques fonctionnalités pour traiter de
Packit 90a5c9
    manière plus intelligente les requêtes en provenance de navigateurs qui
Packit 90a5c9
    envoient des informations de négociation incomplètes.

Packit 90a5c9
Packit 90a5c9
    

La négociation de contenu est assurée par le module

Packit 90a5c9
    mod_negotiation qui est compilé par défaut
Packit 90a5c9
    dans le serveur.

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
  • La négociation avec httpd
  • Packit 90a5c9
  • Les méthodes de négociation
  • Packit 90a5c9
  • Ajustement des valeurs de qualité
  • Packit 90a5c9
  • Extensions à la négociation de contenu
  • Packit 90a5c9
    transparente
    Packit 90a5c9
  • Remarques à propos des liens hypertextes et des
  • Packit 90a5c9
    conventions de nommage
    Packit 90a5c9
  • Remarque sur la mise en cache
  • Packit 90a5c9

    Voir aussi

    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    À propos de la négociation de contenu

    Packit 90a5c9
    Packit 90a5c9
        

    Une ressource peut être disponible selon différentes représentations.

    Packit 90a5c9
        Par exemple, elle peut être disponible en différents langages ou pour
    Packit 90a5c9
        différents types de média, ou une combinaison des deux.
    Packit 90a5c9
        Pour faire le meilleur choix, on peut fournir à l'utilisateur une page
    Packit 90a5c9
        d'index, et le laisser choisir. Cependant, le serveur peut souvent faire
    Packit 90a5c9
        ce choix automatiquement. Ceci est possible car les navigateurs peuvent
    Packit 90a5c9
        envoyer des informations sur les
    Packit 90a5c9
        représentations qu'ils préfèrent à l'intérieur de chaque requête.
    Packit 90a5c9
        Par exemple, un navigateur peut indiquer
    Packit 90a5c9
        qu'il préfère voir les informations en français, mais qu'en cas
    Packit 90a5c9
        d'impossibilité l'anglais peut convenir. Les navigateurs indiquent leurs
    Packit 90a5c9
        préférences à l'aide d'en-têtes dans la requête. Pour ne demander que des
    Packit 90a5c9
        représentations en français, le navigateur peut utiliser l'en-tête :

    Packit 90a5c9
    Packit 90a5c9

    Accept-Language: fr

    Packit 90a5c9
    Packit 90a5c9
        

    Notez qu'il ne sera tenu compte de cette préférence que s'il existe un

    Packit 90a5c9
        choix de représentations et que ces dernières varient en fonction
    Packit 90a5c9
        du langage.

    Packit 90a5c9
    Packit 90a5c9
        

    À titre d'exemple d'une requête plus complexe, ce navigateur a été

    Packit 90a5c9
        configuré pour accepter le français et l'anglais, avec une préférence pour
    Packit 90a5c9
        le français, et accepter différents types de média, avec une préférence
    Packit 90a5c9
        pour HTML par rapport à au texte plat ("plain text") ou autres types de fichiers texte, et
    Packit 90a5c9
        avec une préférence pour GIF ou JPEG par rapport à tout autre type de
    Packit 90a5c9
        média, mais autorisant tout autre type de média en dernier ressort :

    Packit 90a5c9
    Packit 90a5c9

    Packit 90a5c9
      Accept-Language: fr; q=1.0, en; q=0.5
    Packit 90a5c9
      Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1
    Packit 90a5c9

    Packit 90a5c9
    Packit 90a5c9
        

    httpd supporte la négociation de contenu "server driven" (telle qu'elle

    Packit 90a5c9
        est définie dans la spécification HTTP/1.1), où c'est le serveur qui
    Packit 90a5c9
        décide quelle est la meilleure représentation à retourner pour la ressource
    Packit 90a5c9
        demandée. Il supporte entièrement les en-têtes de requête
    Packit 90a5c9
        Accept, Accept-Language,
    Packit 90a5c9
        Accept-Charset et Accept-Encoding.
    Packit 90a5c9
        httpd supporte aussi la négociation de contenu transparente, qui est un
    Packit 90a5c9
        protocole de négociation expérimental défini dans les RFC 2295 et 2296.
    Packit 90a5c9
        Il ne supporte pas la négociation de fonctionnalité (feature negotiation)
    Packit 90a5c9
        telle qu'elle est définie dans ces RFCs.

    Packit 90a5c9
    Packit 90a5c9
        

    Une ressource est une entité conceptuelle identifiée

    Packit 90a5c9
        par une URI (RFC 2396). Un serveur HTTP comme le serveur HTTP Apache
    Packit 90a5c9
        propose l'accès à des
    Packit 90a5c9
        représentations de la ressource à l'intérieur de son
    Packit 90a5c9
        espace de nommage, chaque représentation étant composée d'une séquence
    Packit 90a5c9
        d'octets avec la définition d'un type de media, d'un jeu de caractères,
    Packit 90a5c9
        d'un encodage, etc... A un instant donné, chaque ressource peut être
    Packit 90a5c9
        associée avec zéro, une ou plusieurs représentations. Si plusieurs
    Packit 90a5c9
        représentations sont disponibles, la ressource est qualifiée de
    Packit 90a5c9
        négociable et chacune de ses représentations se nomme
    Packit 90a5c9
        variante. Les différences entre les
    Packit 90a5c9
        variantes disponibles d'une ressource négociable constituent les
    Packit 90a5c9
        dimensions de la négociation.

    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    La négociation avec httpd

    Packit 90a5c9
    Packit 90a5c9
        

    Afin de négocier une ressource, on doit fournir au serveur des

    Packit 90a5c9
        informations à propos de chacune des variantes. Il y a deux manières
    Packit 90a5c9
        d'accomplir ceci :

    Packit 90a5c9
    Packit 90a5c9
        
      Packit 90a5c9
            
    • Utiliser une liste de correspondances de type ("type-map") (c'est à dire
    • Packit 90a5c9
            un fichier *.var) qui nomme explicitement les fichiers
      Packit 90a5c9
            contenant les variantes, ou
      Packit 90a5c9
      Packit 90a5c9
            
    • Utiliser une recherche "multivues", où le serveur effectue une
    • Packit 90a5c9
            recherche de correspondance sur un motif de nom de fichier implicite et
      Packit 90a5c9
            fait son choix parmi les différents résultats.
      Packit 90a5c9
          
      Packit 90a5c9
      Packit 90a5c9
         

      Utilisation d'un fichier de

      Packit 90a5c9
         correspondances de types (type-map)
      Packit 90a5c9
      Packit 90a5c9
          

      Une liste de correspondances de types est un document associé au

      Packit 90a5c9
          gestionnaire type-map (ou, dans un souci de compatibilité
      Packit 90a5c9
          ascendante avec des configurations de httpd plus anciennes, le
      Packit 90a5c9
          type MIME
      Packit 90a5c9
          application/x-type-map). Notez que pour utiliser cette
      Packit 90a5c9
          fonctionnalité, vous devez, dans le fichier de configuration, définir un
      Packit 90a5c9
          gestionnaire qui associe un suffixe de fichier à une type-map;
      Packit 90a5c9
          ce qui se fait simplement en ajoutant

      Packit 90a5c9
      Packit 90a5c9
      AddHandler type-map .var
      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9
          

      dans le fichier de configuration du serveur.

      Packit 90a5c9
      Packit 90a5c9
          

      Les fichiers de correspondances de types doivent posséder le même nom que

      Packit 90a5c9
          la ressource qu'ils décrivent, avec pour extension
      Packit 90a5c9
          .var. Dans l'exemple ci-dessous, la ressource a pour
      Packit 90a5c9
          nom foo, et le fichier de correspondances se nomme donc
      Packit 90a5c9
          foo.var.

      Packit 90a5c9
      Packit 90a5c9
          

      Ce fichier doit comporter une entrée pour chaque variante

      Packit 90a5c9
          disponible; chaque entrée consiste en une ligne contiguë d'en-têtes au
      Packit 90a5c9
          format HTTP. les entrées sont séparées par des lignes vides. Les lignes
      Packit 90a5c9
          vides à l'intérieur d'une entrée sont interdites. Par convention, le
      Packit 90a5c9
          fichier de correspondances de types débute par une entrée concernant l'entité
      Packit 90a5c9
          considérée dans son ensemble (bien que ce ne soit pas obligatoire, et
      Packit 90a5c9
          ignoré si présent). Un exemple de fichier de
      Packit 90a5c9
          correspondance de types est fourni
      Packit 90a5c9
          ci-dessous.

      Packit 90a5c9
      Packit 90a5c9
          

      Les URIs de ce fichier sont relatifs à la localisation du fichier

      Packit 90a5c9
          de correspondances de types. En général, ces fichiers se trouveront dans le
      Packit 90a5c9
          même répertoire que le fichier de correspondances de types, mais ce
      Packit 90a5c9
          n'est pas obligatoire. Vous pouvez utiliser des URIs absolus ou
      Packit 90a5c9
          relatifs pour tout fichier situé sur le même serveur que le fichier
      Packit 90a5c9
          de correspondances.

      Packit 90a5c9
      Packit 90a5c9

      Packit 90a5c9
        URI: foo
      Packit 90a5c9

      Packit 90a5c9
        URI: foo.en.html
      Packit 90a5c9
        Content-type: text/html
      Packit 90a5c9
        Content-language: en
      Packit 90a5c9

      Packit 90a5c9
        URI: foo.fr.de.html
      Packit 90a5c9
        Content-type: text/html;charset=iso-8859-2
      Packit 90a5c9
        Content-language: fr, de
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      Notez aussi qu'un fichier de correspondances de types prend le pas sur

      Packit 90a5c9
          les extensions de noms de fichiers, même si les Multivues sont activées.
      Packit 90a5c9
          Si les variantes sont de qualités différentes, on doit l'indiquer
      Packit 90a5c9
          à l'aide du paramètre "qs" à la suite du type de média, comme pour cette
      Packit 90a5c9
          image
      Packit 90a5c9
          (disponible aux formats JPEG, GIF, ou ASCII-art) : 

      Packit 90a5c9
      Packit 90a5c9

      Packit 90a5c9
        URI: foo
      Packit 90a5c9

      Packit 90a5c9
        URI: foo.jpeg
      Packit 90a5c9
        Content-type: image/jpeg; qs=0.8
      Packit 90a5c9

      Packit 90a5c9
        URI: foo.gif
      Packit 90a5c9
        Content-type: image/gif; qs=0.5
      Packit 90a5c9

      Packit 90a5c9
        URI: foo.txt
      Packit 90a5c9
        Content-type: text/plain; qs=0.01
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      Les valeurs de qs peuvent varier de 0.000 à 1.000. Notez que toute

      Packit 90a5c9
          variante possédant une valeur de qs de 0.000 ne sera jamais choisie.
      Packit 90a5c9
          Les variantes qui n'ont pas de paramètre qs défini se voient attribuer
      Packit 90a5c9
          une valeur de 1.0. Le paramètre qs indique la qualité relative de la
      Packit 90a5c9
          variante comparée à celle des autres variantes disponibles, sans tenir
      Packit 90a5c9
          compte des capacités du client. Par exemple, un fichier JPEG possède
      Packit 90a5c9
          en général une qualité supérieure à celle d'un fichier ASCII s'il
      Packit 90a5c9
          représente une photographie. Cependant, si la ressource représentée est
      Packit 90a5c9
          à un ASCII art original, la représentation ASCII sera de meilleure qualité
      Packit 90a5c9
          que la représentation JPEG. Ainsi une valeur de qs est associée à une
      Packit 90a5c9
          variante en fonction de la nature de la ressource qu'elle représente.

      Packit 90a5c9
      Packit 90a5c9
          

      La liste complète des en-têtes reconnus est disponible dans la

      Packit 90a5c9
          documentation sur les correspondances de types du
      Packit 90a5c9
          module mod_negotiation.

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9

      Multivues (option Multiviews)

      Packit 90a5c9
      Packit 90a5c9
          

      MultiViews est une option qui s'applique à un répertoire,

      Packit 90a5c9
          ce qui signifie qu'elle peut être activée à l'aide d'une directive
      Packit 90a5c9
          Options à l'intérieur d'une section
      Packit 90a5c9
          <Directory>, <Location> ou <Files> dans
      Packit 90a5c9
          httpd.conf, ou (si AllowOverride est correctement positionnée) dans
      Packit 90a5c9
          des fichiers
      Packit 90a5c9
          .htaccess. Notez que Options All
      Packit 90a5c9
          n'active pas MultiViews; vous devez activer cette option en
      Packit 90a5c9
          la nommant explicitement.

      Packit 90a5c9
      Packit 90a5c9
          

      L'effet de MultiViews est le suivant : si le serveur reçoit

      Packit 90a5c9
          une requête pour /tel/répertoire/foo, si
      Packit 90a5c9
          MultiViews est activée pour
      Packit 90a5c9
          /tel/répertoire, et si
      Packit 90a5c9
          /tel/répertoire/foo n'existe pas, le serveur parcourt
      Packit 90a5c9
          le répertoire à la recherche de fichiers nommés foo.*, et simule
      Packit 90a5c9
          littéralement une correspondance de types (type map) qui liste tous ces
      Packit 90a5c9
          fichiers, en leur associant les mêmes types de média et encodages de
      Packit 90a5c9
          contenu qu'ils auraient eu si le client avait demandé l'accès à l'un
      Packit 90a5c9
          d'entre eux par son nom. Il choisit ensuite ce qui correspond le mieux
      Packit 90a5c9
          aux besoins du client.

      Packit 90a5c9
      Packit 90a5c9
          

      MultiViews peut aussi s'appliquer à la recherche du fichier

      Packit 90a5c9
          nommé par la directive DirectoryIndex, si le serveur tente d'indexer
      Packit 90a5c9
          un répertoire. Si les fichiers de configuration spécifient

      Packit 90a5c9
      DirectoryIndex index
      Packit 90a5c9
      Packit 90a5c9
          

      le serveur va choisir entre index.html

      Packit 90a5c9
          et index.html3 si les deux fichiers sont présents. Si aucun
      Packit 90a5c9
          n'est présent, mais index.cgi existe,
      Packit 90a5c9
          le serveur l'exécutera.

      Packit 90a5c9
      Packit 90a5c9
          

      Si, parcequ'elle n'est pas reconnue par mod_mime,

      Packit 90a5c9
          l'extension d'un des fichiers du répertoire ne permet pas de
      Packit 90a5c9
          déterminer son jeu de caractères, son type de contenu, son langage, ou son
      Packit 90a5c9
          encodage,  alors
      Packit 90a5c9
          le résultat dépendra de la définition de la directive MultiViewsMatch. Cette directive détermine
      Packit 90a5c9
          si les gestionnaires (handlers), les filtres, et autres types d'extensions
      Packit 90a5c9
          peuvent participer à la négociation MultiVues.

      Packit 90a5c9
      Packit 90a5c9
      top
      Packit 90a5c9
      Packit 90a5c9

      Les méthodes de négociation

      Packit 90a5c9
      Packit 90a5c9
          

      Une fois obtenue la liste des variantes pour une ressource donnée,

      Packit 90a5c9
          httpd dispose de deux méthodes pour choisir la meilleure variante à
      Packit 90a5c9
          retourner, s'il y a lieu, soit à partir d'un fichier de
      Packit 90a5c9
          correspondances de types, soit en se basant sur les noms de fichiers du
      Packit 90a5c9
          répertoire. Il n'est pas nécessaire de connaître en détails comment la
      Packit 90a5c9
          négociation fonctionne réellement pour pouvoir utiliser les fonctionnalités
      Packit 90a5c9
          de négociation de contenu de httpd. La suite de ce document explique
      Packit 90a5c9
          cependant les méthodes utilisées pour ceux ou celles qui sont
      Packit 90a5c9
          intéressés(ées). 

      Packit 90a5c9
      Packit 90a5c9
          

      Il existe deux méthodes de négociation :

      Packit 90a5c9
      Packit 90a5c9
          
        Packit 90a5c9
              
      1. La négociation effectuée par le serveur selon l'algorithme
      2. Packit 90a5c9
              de httpd est normalement utilisée. l'algorithme de
        Packit 90a5c9
              httpd est
        Packit 90a5c9
              expliqué plus en détails ci-dessous. Quand cet algorithme est utilisé,
        Packit 90a5c9
              httpd peut parfois "bricoler" le facteur de qualité (qs) d'une dimension
        Packit 90a5c9
              particulière afin d'obtenir un meilleur résultat.
        Packit 90a5c9
              La manière dont httpd peut modifier les facteurs de qualité est
        Packit 90a5c9
              expliquée plus en détails ci-dessous.
        Packit 90a5c9
        Packit 90a5c9
              
      3. La négociation de contenu transparente est utilisée
      4. Packit 90a5c9
              quand le navigateur le demande explicitement selon le mécanisme défini
        Packit 90a5c9
              dans la RFC 2295. Cette méthode de négociation donne au navigateur le
        Packit 90a5c9
              contrôle total du choix de la meilleure variante; le résultat dépend
        Packit 90a5c9
              cependant de la spécificité des algorithmes utilisés par le navigateur.
        Packit 90a5c9
              Au cours du processus de négociation transparente, le navigateur peut
        Packit 90a5c9
              demander à httpd d'exécuter l'"algorithme de sélection de variante à
        Packit 90a5c9
              distance" défini dans la RFC 2296.
        Packit 90a5c9
            
        Packit 90a5c9
        Packit 90a5c9

        Les dimensions de la négociation

        Packit 90a5c9
        Packit 90a5c9
            
        Packit 90a5c9
              
        Packit 90a5c9
              
        Packit 90a5c9
                Dimension
        Packit 90a5c9
        Packit 90a5c9
                Notes
        Packit 90a5c9
              
        Packit 90a5c9
        Packit 90a5c9
              
        Packit 90a5c9
                Type de média
        Packit 90a5c9
        Packit 90a5c9
                Le navigateur affiche ses préférences à l'aide du champ d'en-tête
        Packit 90a5c9
        	Accept. Chaque type de média peut se voir associé un facteur de
        Packit 90a5c9
        	qualité. La description de la variante peut aussi avoir un facteur de
        Packit 90a5c9
        	qualité (le paramètre "qs").
        Packit 90a5c9
              
        Packit 90a5c9
        Packit 90a5c9
              
        Packit 90a5c9
                Langage
        Packit 90a5c9
        Packit 90a5c9
                Le navigateur affiche ses préférences à l'aide du champ d'en-tête
        Packit 90a5c9
                Accept-Language. Chaque langue peut se voir associé un facteur de
        Packit 90a5c9
        	qualité. Les variantes peuvent être associées avec zéro, un ou
        Packit 90a5c9
        	plusieurs langages.
        Packit 90a5c9
              
        Packit 90a5c9
        Packit 90a5c9
              
        Packit 90a5c9
                Encoding
        Packit 90a5c9
        Packit 90a5c9
                Le navigateur affiche ses préférences à l'aide du champ d'en-tête
        Packit 90a5c9
                Accept-Encoding. Chaque encodage peut se voir associé un facteur de
        Packit 90a5c9
        	qualité.
        Packit 90a5c9
              
        Packit 90a5c9
        Packit 90a5c9
              
        Packit 90a5c9
                Charset
        Packit 90a5c9
        Packit 90a5c9
                Le navigateur affiche ses préférences à l'aide du champ d'en-tête
        Packit 90a5c9
                Accept-Charset. Chaque jeu de caractère peut se voir associé un facteur de
        Packit 90a5c9
        	qualité. Les variantes peuvent préciser un jeu de caractères comme
        Packit 90a5c9
        	paramètre du type de média.
        Packit 90a5c9
              
        Packit 90a5c9
            
        Packit 90a5c9
        Packit 90a5c9
        Packit 90a5c9

        L'algorithme de négociation de

        Packit 90a5c9
        httpd
        Packit 90a5c9
        Packit 90a5c9
            

        httpd peut utiliser l'algorithme suivant pour choisir la "meilleure"

        Packit 90a5c9
            variante (s'il y en a une) à retourner au navigateur. Cet algorithme n'est pas
        Packit 90a5c9
            configurable. Il fonctionne comme suit :

        Packit 90a5c9
        Packit 90a5c9
            
          Packit 90a5c9
                
        1. En premier lieu, pour chaque dimension de la négociation, consulter
        2. Packit 90a5c9
                le champ d'en-tête Accept* approprié et assigner une qualité à
          Packit 90a5c9
                chaque variante. Si l'en-tête Accept* pour toute dimension
          Packit 90a5c9
                implique que la variante n'est pas acceptable, éliminer cette dernière.
          Packit 90a5c9
                S'il ne reste plus de variante, aller à l'étape 4.
          Packit 90a5c9
          Packit 90a5c9
                
        3. Packit 90a5c9
                  Choisir la "meilleure" variante par élimination. Chacun des tests
          Packit 90a5c9
          	suivants est effectué dans cet ordre. Toute variante non sélectionnée
          Packit 90a5c9
          	à l'issue d'un test est éliminée. Après chaque test, s'il reste une
          Packit 90a5c9
          	seule variante, choisir cette dernière comme celle qui correspond le
          Packit 90a5c9
          	mieux puis aller à l'étape 3. S'il reste plusieurs variantes, passer
          Packit 90a5c9
          	au test suivant.
          Packit 90a5c9
          Packit 90a5c9
                  
            Packit 90a5c9
                      
          1. Multiplier le facteur de qualité de l'en-tête
          2. Packit 90a5c9
            	  Accept par le facteur de qualité "qs" pour le type de
            Packit 90a5c9
            	  média de ces variantes, et choisir la variante qui possède la valeur
            Packit 90a5c9
            	  la plus importante.
            Packit 90a5c9
            Packit 90a5c9
                      
          3. Sélectionner les variantes qui possèdent le facteur de qualité
          4. Packit 90a5c9
            	  de langage le plus haut.
            Packit 90a5c9
            Packit 90a5c9
                      
          5. Sélectionner les variantes dont le langage correspond le mieux,
          6. Packit 90a5c9
                      en se basant sur l'ordre des langages de l'en-tête
            Packit 90a5c9
                      Accept-Language (s'il existe), ou de la directive
            Packit 90a5c9
            	  LanguagePriority (si elle existe).
            Packit 90a5c9
            Packit 90a5c9
                      
          7. Sélectionner les variantes possédant le paramètre de média
          8. Packit 90a5c9
            	  "level" le plus élevé (utilisé pour préciser la version des types de
            Packit 90a5c9
            	  média text/html).
            Packit 90a5c9
            Packit 90a5c9
                      
          9. Sélectionner les variantes possédant le paramètre de média
          10. Packit 90a5c9
            	  "charset" (jeu de caractères) qui correspond le mieux, en se basant
            Packit 90a5c9
            	  sur la ligne d'en-tête Accept-Charset . Le jeu de
            Packit 90a5c9
            	  caractères ISO-8859-1 est acceptable sauf s'il est explicitement
            Packit 90a5c9
            	  exclus. Les variantes avec un type de média text/*
            Packit 90a5c9
                      mais non explicitement associées avec un jeu de caractères
            Packit 90a5c9
            	  particulier sont supposées être en ISO-8859-1.
            Packit 90a5c9
            Packit 90a5c9
                      
          11. Sélectionner les variantes dont le paramètre de média "charset"
          12. Packit 90a5c9
            	  associé n'est pas ISO-8859-1. S'il n'en existe pas,
            Packit 90a5c9
            	  sélectionner toutes les variantes.
            Packit 90a5c9
            Packit 90a5c9
                      
          13. Sélectionner les variantes avec le meilleur encodage. S'il existe
          14. Packit 90a5c9
            	  des variantes avec un encodage acceptable pour le client,
            Packit 90a5c9
            	  sélectionner celles-ci. Sinon, s'il existe des variantes encodées et
            Packit 90a5c9
            	  des variantes non encodées, ne sélectionner que les variantes non
            Packit 90a5c9
            	  encodées. Si toutes les variantes sont encodées ou si aucune
            Packit 90a5c9
            	  ne l'est, sélectionner toutes les variantes.
            Packit 90a5c9
            Packit 90a5c9
                      
          15. Sélectionner les variantes dont le contenu a la longueur
          16. Packit 90a5c9
            	  la plus courte.
            Packit 90a5c9
            Packit 90a5c9
                      
          17. Sélectionner la première des variantes restantes. Il s'agira
          18. Packit 90a5c9
            	  soit de la première variante listée dans le fichier de
            Packit 90a5c9
            	  correspondances de types, soit, quand les variantes sont lues depuis
            Packit 90a5c9
            	  le répertoire, la première par ordre alphabétique quand elles sont
            Packit 90a5c9
            	  triées selon le code ASCII.
            Packit 90a5c9
                    
            Packit 90a5c9
                  
            Packit 90a5c9
            Packit 90a5c9
                  
          19. L'algorithme a maintenant sélectionné une variante considérée comme
          20. Packit 90a5c9
                  la "meilleure", il la retourne donc au client en guise de réponse.
            Packit 90a5c9
                  L'en-tête HTTP Vary de la réponse est renseigné de façon à
            Packit 90a5c9
                  indiquer les dimensions de la négociation (les navigateurs et les caches
            Packit 90a5c9
                  peuvent utiliser cette information lors de la mise en cache de la
            Packit 90a5c9
                  ressource).  Travail terminé.
            Packit 90a5c9
            Packit 90a5c9
                  
          21. Le passage par cette étape signifie qu'aucune variante n'a été
          22. Packit 90a5c9
                  sélectionnée (parcequ'aucune n'est acceptable pour le navigateur).
            Packit 90a5c9
                  Envoyer une réponse avec un code de statut 406 (qui signifie "Aucune
            Packit 90a5c9
                  représentation acceptable") et un corps comportant un document HTML qui
            Packit 90a5c9
                  affiche les variantes disponibles. Renseigner aussi l'en-tête HTTP
            Packit 90a5c9
                  Vary de façon à indiquer les dimensions de la variante.
            Packit 90a5c9
                
            Packit 90a5c9
            Packit 90a5c9
            top
            Packit 90a5c9
            Packit 90a5c9

            Ajustement des valeurs de qualité

            Packit 90a5c9
            Packit 90a5c9
                

            Parfois httpd modifie les valeurs de qualité par rapport à celles qui

            Packit 90a5c9
                découleraient d'une stricte interprétation de l'algorithme de négociation
            Packit 90a5c9
                de httpd ci-dessus, ceci pour améliorer les résultats de l'algorithme pour
            Packit 90a5c9
                les navigateurs qui envoient des informations incomplètes ou inappropriées.
            Packit 90a5c9
                Certains des navigateurs les plus populaires envoient des informations dans
            Packit 90a5c9
                l'en-tête Accept qui, sans ce traitement, provoqueraient la
            Packit 90a5c9
                sélection d'une variante inappropriée dans de nombreux cas. Quand un
            Packit 90a5c9
                navigateur envoie des informations complètes et correctes ces ajustements
            Packit 90a5c9
                ne sont pas effectués.

            Packit 90a5c9
            Packit 90a5c9

            Types de média et caractères génériques

            Packit 90a5c9
            Packit 90a5c9
                

            L'en-tête de requête Accept: indique les types de média

            Packit 90a5c9
                souhaités. Il peut aussi contenir des types de média avec caractères
            Packit 90a5c9
                génériques, comme "image/*" ou "*/*" où * correspond à n'importe quelle
            Packit 90a5c9
                chaîne de caractères. Ainsi une requête contenant :

            Packit 90a5c9
            Packit 90a5c9

            Accept: image/*, */*

            Packit 90a5c9
            Packit 90a5c9
                

            indiquerait que tout type de média est acceptable, avec une préférence

            Packit 90a5c9
                pour les types commençant par "image/".
            Packit 90a5c9
                Certains navigateurs ajoutent par défaut des types de média avec caractères
            Packit 90a5c9
                génériques aux types explicitement nommés qu'ils peuvent gérer.
            Packit 90a5c9
                Par exemple :

            Packit 90a5c9
            Packit 90a5c9

            Packit 90a5c9
              Accept: text/html, text/plain, image/gif, image/jpeg, */*
            Packit 90a5c9

            Packit 90a5c9
                

            Ceci indique que les types explicitement listés sont préférés, mais

            Packit 90a5c9
                qu'une représentation avec un type différent de ces derniers conviendra
            Packit 90a5c9
                aussi.  Les valeurs de qualités explicites,
            Packit 90a5c9
                afin de préciser ce que veut vraiment le navigateur, s'utilisent
            Packit 90a5c9
                comme suit :

            Packit 90a5c9

            Packit 90a5c9
              Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
            Packit 90a5c9

            Packit 90a5c9
                

            Les types explicites n'ont pas de facteur de qualité, la valeur par

            Packit 90a5c9
                défaut de leur préférence est donc de 1.0 (la plus haute). Le type avec
            Packit 90a5c9
                caractères génériques */* se voit attribuer une préférence basse de 0.01,
            Packit 90a5c9
                si bien que les types autres que ceux explicitement listés ne seront retournés
            Packit 90a5c9
                que s'il n'existe pas de variante correspondant à un type explicitement
            Packit 90a5c9
                listé.

            Packit 90a5c9
            Packit 90a5c9
                

            Si l'en-tête Accept: ne contient pas aucun

            Packit 90a5c9
                facteur de qualité, httpd positionne la valeur de qualité de
            Packit 90a5c9
                "*/*", si present, à 0.01 pour simuler l'effet désiré. Il positionne aussi
            Packit 90a5c9
                la valeur de qualité des types avec caractères génériques au format
            Packit 90a5c9
                "type/*" à 0.02 (ils sont donc préférés à ceux correspondant à "*/*"). Si
            Packit 90a5c9
                un type de média dans l'en-tête Accept: contient un facteur de
            Packit 90a5c9
                qualité, ces valeurs spéciales ne seront pas appliquées, de façon
            Packit 90a5c9
                à ce que les requêtes de navigateurs qui envoient les informations
            Packit 90a5c9
                explicites à prendre en compte fonctionnent comme souhaité.

            Packit 90a5c9
            Packit 90a5c9
            Packit 90a5c9

            Exceptions dans la négociation du

            Packit 90a5c9
            langage
            Packit 90a5c9
            Packit 90a5c9
                

            A partir de la version 2.0 de httpd, certaines exceptions ont été

            Packit 90a5c9
                ajoutées à l'algorithme de négociation afin de ménager une issue de secours
            Packit 90a5c9
                quand la négociation ne trouve aucun langage correspondant.

            Packit 90a5c9
            Packit 90a5c9
                

            Quand un client demande une page sur votre serveur, si ce dernier ne

            Packit 90a5c9
                parvient pas à trouver une page dont la langue corresponde à l'en-tête
            Packit 90a5c9
                Accept-language envoyé par le navigateur, il enverra au client
            Packit 90a5c9
                une réponse "Aucune variante acceptable" ou "Plusieurs choix possibles".
            Packit 90a5c9
                Pour éviter ces
            Packit 90a5c9
                messages d'erreur, il est possible de configurer httpd de façon à ce que,
            Packit 90a5c9
                dans ces cas, il ignore l'en-tête Accept-language et fournisse
            Packit 90a5c9
                tout de même un document, même s'il ne correspond pas exactement à la
            Packit 90a5c9
                demande explicite du client. La directive ForceLanguagePriority
            Packit 90a5c9
                peut être utilisée pour éviter ces messages d'erreur et leur substituer une
            Packit 90a5c9
                page dont le langage sera déterminé en fonction du contenu de la directive
            Packit 90a5c9
                LanguagePriority.

            Packit 90a5c9
            Packit 90a5c9
                

            Le serveur va aussi essayer d'étendre sa recherche de correspondance aux

            Packit 90a5c9
                sous-ensembles de langages quand aucune correspondance exacte ne peut être
            Packit 90a5c9
                trouvée. Par exemple, si un client demande des documents possédant le
            Packit 90a5c9
                langage en-GB, c'est à dire anglais britannique, le standard
            Packit 90a5c9
                HTTP/1.1 n'autorise normalement pas le serveur à faire correspondre cette
            Packit 90a5c9
                demande à un document dont le langage est simplement en.
            Packit 90a5c9
                (Notez qu'inclure en-GB et non en dans l'en-tête
            Packit 90a5c9
                Accept-Language constitue une quasi-erreur de configuration,
            Packit 90a5c9
                car il est très peu probable qu'un lecteur qui comprend l'anglais
            Packit 90a5c9
                britannique, ne comprenne pas l'anglais en général. Malheureusement, de
            Packit 90a5c9
                nombreux clients ont réellement des configurations par défaut de ce type.)
            Packit 90a5c9
                Cependant, si aucune autre correspondance de langage n'est possible, et que le
            Packit 90a5c9
                serveur est sur le point de retourner une erreur "Aucune variable
            Packit 90a5c9
                acceptable" ou de choisir le langage défini par la directive LanguagePriority, le serveur ignorera
            Packit 90a5c9
                la spécification du sous-ensemble de langage et associera la demande en
            Packit 90a5c9
                en-GB à des documents en en.  Implicitement,
            Packit 90a5c9
                httpd ajoute le langage parent à la liste de langues acceptés par le
            Packit 90a5c9
                client avec une valeur de qualité très basse. Notez cependant que si le
            Packit 90a5c9
                client demande "en-GB; q=0.9, fr; q=0.8", et le serveur dispose de
            Packit 90a5c9
                documents estampillés "en" et "fr", alors c'est le document "fr" qui sera
            Packit 90a5c9
                retourné, tout ceci dans un souci de compatibilité avec la spécification
            Packit 90a5c9
                HTTP/1.1 et afin de fonctionner efficacement avec les clients
            Packit 90a5c9
                correctement configurés.

            Packit 90a5c9
            Packit 90a5c9
                

            Pour supporter les techniques avancées (comme les cookies ou les chemins

            Packit 90a5c9
                d'URL spéciaux) afin de déterminer le langage préféré de l'utilisateur, le
            Packit 90a5c9
                module mod_negotiation reconnaît la
            Packit 90a5c9
                variable d'environnement
            Packit 90a5c9
                prefer-language
            Packit 90a5c9
                depuis la version 2.0.47 de httpd. Si elle est définie et contient un
            Packit 90a5c9
                symbole de langage approprié, mod_negotiation va essayer
            Packit 90a5c9
                de sélectionner une variante correspondante. S'il n'existe pas de telle
            Packit 90a5c9
                variante, le processus normal de négociation sera lancé.

            Packit 90a5c9
            Packit 90a5c9
                

            Exemple

            SetEnvIf Cookie "language=(.+)" prefer-language=$1
            Packit 90a5c9
            Header append Vary cookie
            Packit 90a5c9
            Packit 90a5c9
            Packit 90a5c9
            top
            Packit 90a5c9
            Packit 90a5c9

            Extensions à la négociation de contenu

            Packit 90a5c9
            transparente
            Packit 90a5c9
            Packit 90a5c9

            httpd étend le protocole de négociation de contenu transparente (RFC

            Packit 90a5c9
            2295) comme suit. Un nouvel élément {encodage ..} est utilisé dans
            Packit 90a5c9
            les listes de variantes pour marquer celles qui ne sont disponibles qu'avec un
            Packit 90a5c9
            encodage de contenu spécifique. L'implémentation de l'algorithme
            Packit 90a5c9
            RVSA/1.0 (RFC 2296) est étendue à la reconnaissance de variantes encodées dans
            Packit 90a5c9
            la liste, et à leur utilisation en tant que variantes candidates à partir du
            Packit 90a5c9
            moment où leur encodage satisfait au contenu de l'en-tête de requête
            Packit 90a5c9
            Accept-Encoding. L'implémentation RVSA/1.0 n'arrondit pas les
            Packit 90a5c9
            facteurs de qualité calculés à 5 décimales avant d'avoir choisi la meilleure
            Packit 90a5c9
            variante.

            Packit 90a5c9
            top
            Packit 90a5c9
            Packit 90a5c9

            Remarques à propos des liens hypertextes et des

            Packit 90a5c9
            conventions de nommage
            Packit 90a5c9
            Packit 90a5c9
                

            Si vous utilisez la négociation de langage, vous avez le choix entre

            Packit 90a5c9
                différentes conventions de nommage, car les fichiers peuvent posséder
            Packit 90a5c9
                plusieurs extensions, et l'ordre dans lequel ces dernières apparaissent
            Packit 90a5c9
                est en général sans rapport (voir la documentation sur le module mod_mime
            Packit 90a5c9
                pour plus de détails).

            Packit 90a5c9
            Packit 90a5c9
                

            Un fichier type possède une extension liée au type MIME

            Packit 90a5c9
                (par exemple, html), mais parfois aussi une
            Packit 90a5c9
                extension liée à l'encodage (par exemple, gz),
            Packit 90a5c9
                et bien sûr une extension liée au langage
            Packit 90a5c9
                (par exemple, en) quand plusieurs variantes de
            Packit 90a5c9
                langage sont disponibles pour ce fichier.

            Packit 90a5c9
            Packit 90a5c9
                

            Exemples :

            Packit 90a5c9
            Packit 90a5c9
                
              Packit 90a5c9
                    
            • foo.en.html
            • Packit 90a5c9
              Packit 90a5c9
                    
            • foo.html.en
            • Packit 90a5c9
              Packit 90a5c9
                    
            • foo.en.html.gz
            • Packit 90a5c9
                  
              Packit 90a5c9
              Packit 90a5c9
                  

              Ci-dessous d'autres exemples de noms de fichiers avec des liens

              Packit 90a5c9
                  hypertextes valides et invalides :

              Packit 90a5c9
              Packit 90a5c9
                  
              Packit 90a5c9
                    
              Packit 90a5c9
                    
              Packit 90a5c9
                      Nom fichier
              Packit 90a5c9
              Packit 90a5c9
                      lien valide
              Packit 90a5c9
              Packit 90a5c9
                      Lien invalide
              Packit 90a5c9
                    
              Packit 90a5c9
              Packit 90a5c9
                    
              Packit 90a5c9
                      foo.html.en
              Packit 90a5c9
              Packit 90a5c9
                      foo
              Packit 90a5c9
                       foo.html
              Packit 90a5c9
              Packit 90a5c9
                      -
              Packit 90a5c9
                    
              Packit 90a5c9
              Packit 90a5c9
                    
              Packit 90a5c9
                      foo.en.html
              Packit 90a5c9
              Packit 90a5c9
                      foo
              Packit 90a5c9
              Packit 90a5c9
                      foo.html
              Packit 90a5c9
                    
              Packit 90a5c9
              Packit 90a5c9
                    
              Packit 90a5c9
                      foo.html.en.gz
              Packit 90a5c9
              Packit 90a5c9
                      foo
              Packit 90a5c9
                       foo.html
              Packit 90a5c9
              Packit 90a5c9
                      foo.gz
              Packit 90a5c9
                       foo.html.gz
              Packit 90a5c9
                    
              Packit 90a5c9
              Packit 90a5c9
                    
              Packit 90a5c9
                      foo.en.html.gz
              Packit 90a5c9
              Packit 90a5c9
                      foo
              Packit 90a5c9
              Packit 90a5c9
                      foo.html
              Packit 90a5c9
                       foo.html.gz
              Packit 90a5c9
                       foo.gz
              Packit 90a5c9
                    
              Packit 90a5c9
              Packit 90a5c9
                    
              Packit 90a5c9
                      foo.gz.html.en
              Packit 90a5c9
              Packit 90a5c9
                      foo
              Packit 90a5c9
                       foo.gz
              Packit 90a5c9
                       foo.gz.html
              Packit 90a5c9
              Packit 90a5c9
                      foo.html
              Packit 90a5c9
                    
              Packit 90a5c9
              Packit 90a5c9
                    
              Packit 90a5c9
                      foo.html.gz.en
              Packit 90a5c9
              Packit 90a5c9
                      foo
              Packit 90a5c9
                       foo.html
              Packit 90a5c9
                       foo.html.gz
              Packit 90a5c9
              Packit 90a5c9
                      foo.gz
              Packit 90a5c9
                    
              Packit 90a5c9
                  
              Packit 90a5c9
              Packit 90a5c9
                  

              En regardant la table ci-dessus, vous remarquerez qu'il est toujours

              Packit 90a5c9
                  possible d'utiliser le nom de fichier sans extension dans un lien
              Packit 90a5c9
                  (par exemple, foo). L'avantage est de pouvoir
              Packit 90a5c9
                  dissimuler le type réel du fichier associé à un document et de pouvoir
              Packit 90a5c9
                  le modifier
              Packit 90a5c9
                  ultérieurement, par exemple, de html à
              Packit 90a5c9
                  shtml ou cgi sans avoir à
              Packit 90a5c9
                  mettre à jour aucun lien.

              Packit 90a5c9
              Packit 90a5c9
                  

              Si vous souhaitez continuer à utiliser un type MIME dans vos liens

              Packit 90a5c9
                  (par exemple  foo.html), l'extension liée au langage
              Packit 90a5c9
                  (y compris une extension liée à l'encodage s'il en existe une)
              Packit 90a5c9
                  doit se trouver à droite de l'extension liée au type MIME
              Packit 90a5c9
                  (par exemple, foo.html.en).

              Packit 90a5c9
              top
              Packit 90a5c9
              Packit 90a5c9

              Remarque sur la mise en cache

              Packit 90a5c9
              Packit 90a5c9
                  

              Quand un cache stocke une représentation, il l'associe avec l'URL de la

              Packit 90a5c9
                  requête. Lorsque cette URL est à nouveau demandée, le cache peut utiliser
              Packit 90a5c9
                  la représentation stockée. Cependant, si la ressource est négociable au
              Packit 90a5c9
                  niveau du serveur, il se peut que seule la première variante demandée soit
              Packit 90a5c9
                  mise en cache et de ce fait, la correspondance positive du cache peut
              Packit 90a5c9
                  entraîner une réponse inappropriée. Pour
              Packit 90a5c9
                  éviter ceci, httpd marque par
              Packit 90a5c9
                  défaut toutes les réponses qui sont retournées après une négociation de
              Packit 90a5c9
                  contenu comme "non-cachables" par les clients HTTP/1.0. httpd supporte
              Packit 90a5c9
                  aussi les fonctionnalités du protocole HTTP/1.1 afin de permettre la mise
              Packit 90a5c9
                  en cache des réponses négociées.

              Packit 90a5c9
              Packit 90a5c9
                  

              Pour les requêtes en provenance d'un client compatible HTTP/1.0

              Packit 90a5c9
                  (un navigateur ou un cache), la directive CacheNegotiatedDocs peut être utilisée
              Packit 90a5c9
                  pour permettre la mise en cache des réponses qui ont fait l'objet d'une
              Packit 90a5c9
                  négociation. Cette directive peut intervenir dans la configuration au
              Packit 90a5c9
                  niveau du serveur ou de l'hôte virtuel, et n'accepte aucun argument. Elle
              Packit 90a5c9
                  n'a aucun effet sur les requêtes en provenance de clients HTTP/1.1.

              Packit 90a5c9
              Packit 90a5c9
                  

              Pour les clients HTTP/1.1, httpd envoie un en-tête de réponse HTTP

              Packit 90a5c9
                  Vary afin d'indiquer les dimensions de la négociation pour
              Packit 90a5c9
                  cette réponse. Les caches peuvent
              Packit 90a5c9
                  utiliser cette information afin de déterminer
              Packit 90a5c9
                  si une requête peut être servie à partir de la copie locale. Pour inciter
              Packit 90a5c9
                  un cache à utiliser la copie locale sans tenir compte des dimensions de la
              Packit 90a5c9
                  négociation, définissez la
              Packit 90a5c9
                  variable d'environnement
              Packit 90a5c9
                  force-no-vary.

              Packit 90a5c9
              Packit 90a5c9
              Packit 90a5c9
              Packit 90a5c9

              Langues Disponibles:  en  |

              Packit 90a5c9
               fr  |
              Packit 90a5c9
               ja  |
              Packit 90a5c9
               ko  |
              Packit 90a5c9
               tr 

              Packit 90a5c9
              top

              Commentaires

              Notice:
              This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
              Packit 90a5c9
              <script type="text/javascript">
              Packit 90a5c9
              var comments_shortname = 'httpd';
              Packit 90a5c9
              var comments_identifier = 'http://httpd.apache.org/docs/2.4/content-negotiation.html';
              Packit 90a5c9
              (function(w, d) {
              Packit 90a5c9
                  if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
              Packit 90a5c9
                      d.write('
              <\/div>');
              Packit 90a5c9
                      var s = d.createElement('script');
              Packit 90a5c9
                      s.type = 'text/javascript';
              Packit 90a5c9
                      s.async = true;
              Packit 90a5c9
                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
              Packit 90a5c9
                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
              Packit 90a5c9
                  }
              Packit 90a5c9
                  else { 
              Packit 90a5c9
                      d.write('
              Comments are disabled for this page at the moment.<\/div>');
              Packit 90a5c9
                  }
              Packit 90a5c9
              })(window, document);
              Packit 90a5c9
              //--></script>
              Packit 90a5c9

              Copyright 2018 The Apache Software Foundation.
              Autorisé sous Apache License, Version 2.0.

              Packit 90a5c9

              Modules | Directives | FAQ | Glossaire | Plan du site

              <script type="text/javascript">
              Packit 90a5c9
              if (typeof(prettyPrint) !== 'undefined') {
              Packit 90a5c9
                  prettyPrint();
              Packit 90a5c9
              }
              Packit 90a5c9
              //--></script>
              Packit 90a5c9
              </body></html>