d411ae5616e929e32c8e350e12d8517057f3416cgryzor<?xml-stylesheet type="text/xsl" href="/style/manual.fr.xsl"?>
0a05fab9aadd37834734ffe106fc8ad4488fb3e3rbowen<!-- English Revision: 1590372:1673947 (outdated) -->
d411ae5616e929e32c8e350e12d8517057f3416cgryzor<!-- French translation : Lucien GENTIS -->
d411ae5616e929e32c8e350e12d8517057f3416cgryzor<!-- Reviewed by : Vincent Deffontaines -->
d411ae5616e929e32c8e350e12d8517057f3416cgryzor Licensed to the Apache Software Foundation (ASF) under one or more
d411ae5616e929e32c8e350e12d8517057f3416cgryzor contributor license agreements. See the NOTICE file distributed with
d411ae5616e929e32c8e350e12d8517057f3416cgryzor this work for additional information regarding copyright ownership.
d411ae5616e929e32c8e350e12d8517057f3416cgryzor The ASF licenses this file to You under the Apache License, Version 2.0
d411ae5616e929e32c8e350e12d8517057f3416cgryzor (the "License"); you may not use this file except in compliance with
d411ae5616e929e32c8e350e12d8517057f3416cgryzor the License. You may obtain a copy of the License at
d411ae5616e929e32c8e350e12d8517057f3416cgryzor Unless required by applicable law or agreed to in writing, software
d411ae5616e929e32c8e350e12d8517057f3416cgryzor distributed under the License is distributed on an "AS IS" BASIS,
d411ae5616e929e32c8e350e12d8517057f3416cgryzor WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
d411ae5616e929e32c8e350e12d8517057f3416cgryzor See the License for the specific language governing permissions and
d411ae5616e929e32c8e350e12d8517057f3416cgryzor limitations under the License.
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Ce document décrit le mécanisme utilisé pour définir une
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor politique de conformité au protocole HTTP pour un espace d'URL au
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor niveau des serveurs d'origine ou des application sous-jacentes à cet
d411ae5616e929e32c8e350e12d8517057f3416cgryzor espace d'URL.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Chaque politique de conformité est décrite ci-dessous à
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor destination de tous ceux qui ont reçu un message d'erreur suite à un
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor rejet en provenance d'une politique, et ont donc besoin de savoir à
d411ae5616e929e32c8e350e12d8517057f3416cgryzor quoi est du ce rejet et ce qu'ils doivent faire pour corriger
d411ae5616e929e32c8e350e12d8517057f3416cgryzor l'erreur.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <title>Imposer la conformité au protocole HTTP dans Apache 2</title>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directivelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyConditional</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyLength</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyKeepalive</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyType</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyVary</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyValidation</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyNocache</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyMaxage</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyVersion</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </directivelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor href="http://tools.ietf.org/html/rfc1122">RFC1122</a>, et stipulant
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <strong>"Soyez libéral pour ce que vous acceptez, conservateur pour
d411ae5616e929e32c8e350e12d8517057f3416cgryzor ce que vous envoyez"</strong>. Selon ce principe, les clients HTTP
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor vont compenser en corrigeant les réponses incorrectes ou mal
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor configurées, ou ne pouvant pas être mises en cache.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Comme un site web est configuré pour faire face à un trafic
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor toujours grandissant, des applications mal configurées ou non
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor optimisées ou certaines configurations de serveur peuvent menacer la stabilité
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor et l'évolutivité du site web, ainsi que les coûts d'hébergement qui
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor y sont associés. L'évolution d'un site web pour faire face à une
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor complexité croissante de sa configuration accroît les
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor difficultés rencontrées pour détecter et enregistrer les espaces
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor d'URL mal configurés pour un serveur donné.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>De ce fait, un point peut être atteint où le principe
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor "conservateur pour ce que vous envoyez" doit être imposé par
d411ae5616e929e32c8e350e12d8517057f3416cgryzor l'administrateur du serveur.</p>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <p>Le module <module>mod_policy</module> fournit un jeu de filtres
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor qui peuvent être appliqués à un serveur, permettant de tester
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor explicitement les points clé du protocle HTTP, et de journaliser en
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor tant qu'avertissements les réponses non conformes, ou même de
d411ae5616e929e32c8e350e12d8517057f3416cgryzor simplement les rejeter avec un code d'erreur. Chaque filtre peut
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor être appliqué séparément, permettant à l'administrateur de choisir
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor quelles politiques de conformité doivent être imposées en fonction
d411ae5616e929e32c8e350e12d8517057f3416cgryzor de l'environnement.
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Les filtres peuvent être mis en place dans des environnements de
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor test ou de simulation à destination des développeurs d'applications
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor et de sites web, ou s'appliquer à des serveurs en production pour
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor protéger l'infrastructure de systèmes en dehors du contrôle direct
d411ae5616e929e32c8e350e12d8517057f3416cgryzor de l'administrateur.</p>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <img src="images/compliance-reverse-proxy.png" width="666" height="239" alt=
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor "Imposer la conformité au protocole HTTP pour un serveur
d411ae5616e929e32c8e350e12d8517057f3416cgryzor d'applications"/>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Dans l'exemple ci-dessus, un serveur Apache httpd a été intercalé
d411ae5616e929e32c8e350e12d8517057f3416cgryzor entre le serveur d'applications et l'internet au sens large, et
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor configuré pour mettre en cache les réponses en provenance du serveur
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor d'applications. Les filtres de <module>mod_policy</module> ont été
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor ajoutés pour imposer le support de la mise en cache de contenu et
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor des requêtes conditionnelles, assurant ainsi que
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <module>mod_cache</module> et les caches publics de l'internet
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor seront pleinement capables de mettre en cache le contenu créé avec
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor efficacité par le serveur d'applications.</p>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <img src="images/compliance-static.png" width="469" height="239" alt=
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor "Imposer la conformité au protocole HTTP pour un serveur statique"/>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <p>Dans l'exemple plus simple ci-dessus, un serveur statique qui
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor sert du contenu ayant une forte probabilité d'être mis en cache,
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor se voit appliqué un jeu de règles afin de
d411ae5616e929e32c8e350e12d8517057f3416cgryzor s'assurer que sa configuration respecte un niveau minimum de
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor conformité au protocole HTTP.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <title>Politique des requêtes conditionnelles</title>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directivelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyConditional</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </directivelist>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique sera rejetée si le serveur ne répond pas à une
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor requête conditionnelle avec le code d'état approprié. </p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>C'est grâce aux requêtes conditionnelles qu'un cache HTTP peut
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor rafraîchir un contenu périmé, et en particulier dans le cas des
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor contenus à durée de validité courte, l'absence de support des
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor requêtes conditionnelles peut augmenter la charge du serveur.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Plus particulièrement, la présence d'une des en-têtes suivantes
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor dans la requête rend cette dernière conditionnelle :</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <dd>Si l'ETag fourni dans l'en-tête <code>If-Match</code> ne
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor correspond pas à l'ETag de la réponse, le serveur doit renvoyer un
d411ae5616e929e32c8e350e12d8517057f3416cgryzor code d'erreur <code>412 Precondition Failed</code>. Vous trouverez
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor tous les détails du traitement d'un en-tête <code>If-Match</code>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.24">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <dd>Si l'ETag fourni dans l'en-tête <code>If-None-Match</code>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor correspond à l'ETag de la réponse, le serveur doit renvoyer soit
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <code>304 Not Modified</code> pour les requêtes GET/HEAD, soit
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <code>412 Precondition Failed</code> pour les autres méthodes. Vous trouverez
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor tous les détails du traitement d'un en-tête
d411ae5616e929e32c8e350e12d8517057f3416cgryzor href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <dd>Si la date fournie dans l'en-tête <code>If-Modified-Since</code>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor est plus ancienne que celle de l'en-tête <code>Last-Modified</code>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor de la réponse, le serveur doit renvoyer <code>304 Not Modified</code>. Vous trouverez
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor tous les détails du traitement d'un en-tête
d411ae5616e929e32c8e350e12d8517057f3416cgryzor href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.25">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <dd>Si la date fournie dans l'en-tête
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <code>If-Unmodified-Since</code> est plus récente que celle de
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor l'en-tête <code>Last-Modified</code> de la réponse, le serveur doit
d411ae5616e929e32c8e350e12d8517057f3416cgryzor renvoyer <code>412 Precondition Failed</code>. Vous trouverez
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor tous les détails du traitement d'un en-tête
d411ae5616e929e32c8e350e12d8517057f3416cgryzor href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.28">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <dd>Si l'ETag fourni dans l'en-tête <code>If-Range</code> correspond
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor à l'ETag ou à l'en-tête Last-Modified de la réponse, et si un
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor en-tête <code>Range</code> valide est présent, le serveur doit
d411ae5616e929e32c8e350e12d8517057f3416cgryzor renvoyer <code>206 Partial Response</code>. Vous trouverez
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor tous les détails du traitement d'un en-tête <code>If-Range</code>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.27">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Si la réponse est considérée comme ayant réussi (une réponse
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor 2xx), alors qu'elle était conditionnelle et qu'une des réponses
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor ci-dessus était attendue à la place, cette politique sera rejetée.
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor Les réponses qui indiquent une redirection ou une erreur de toute
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor sorte (3xx, 4xx, 5xx) seront ignorées de cette politique.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique est implémentée par le filtre
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <title>Politique de gestion de l'en-tête Content-Length</title>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directivelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyLength</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </directivelist>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique sera rejetée si la réponse du serveur ne contient pas d'en-tête
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>De nombreuses méthodes pour déterminer la taille d'un
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor corps de réponse sont décrites dans la <a
4d239fe66e915d2ef73a95c0620f6b3a9f068b64lgentis href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Lorsque l'en-tête <code>Content-Length</code> est présente, la
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor taille du corps est déclarée au début de la réponse. Si cette
d411ae5616e929e32c8e350e12d8517057f3416cgryzor information est manquante, un cache HTTP pourrait choisir d'ignorer
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor la réponse, car il ne pourrait pas déterminer a priori si la réponse
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor reste dans les limites définies du cache.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Pour indiquer la fin de la réponse au client sans que ce dernier
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor ait à en connaître la taille au préalable, HTTP/1.1 propose
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor l'en-tête <code>Transfer-Encoding</code> comme une alternative à
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <code>Content-Length</code>. Cependant, lors du traitement de
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor requêtes HTTP/1.0, et si l'en-tête <code>Content-Length</code> est
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor absente, le seul mécanisme dont dispose le serveur pour indiquer la
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor fin de la requête consiste à couper la connexion. Dans un
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor environnement contenant des répartiteurs de charge, cela peut
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor court-circuiter le mécanisme des connexions persistantes
d411ae5616e929e32c8e350e12d8517057f3416cgryzor (keepalive).
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Si la réponse est considérée comme réussie (une réponse 2xx) et
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor possède un corps (ce qui exclut les réponses <code>204 No
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor Content</code>), et si l'en-tête <code>Content-Length</code> est
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor absente, la réponse sera rejetée. Aucune réponse indiquant une
d411ae5616e929e32c8e350e12d8517057f3416cgryzor redirection ou une erreur de toute nature (3xx, 4xx, 5xx) n'est
d411ae5616e929e32c8e350e12d8517057f3416cgryzor prise en compte par cette politique.</p>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <note type="warning">Notez que certains modules comme
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <module>mod_proxy</module> ajoutent leur propre en-tête
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <code>Content-Length</code> sous réserve que la réponse où cette
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor en-tête est absente soit suffisamment courte pour que le module ait
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor pu la lire en une seule passe. De ce fait, des réponses courtes pourront
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor être acceptées par la politique, alors que d'autres plus longues
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor seront rejetées pour la même URL.</note>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique est implémentée par le filtre
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <title>Politique de filtrage de l'en-tête Content-Type</title>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directivelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyType</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </directivelist>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique sera rejetée si la réponse du serveur ne contient pas d'en-tête
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <code>Content-Type</code> explicite et valide du point de vue de la
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor syntaxe, correspondant au modèle défini par le serveur.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Le type de media du corps est placé dans une en-tête
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <code>Content-Type</code> dont le format est décrit en détail dans
4d239fe66e915d2ef73a95c0620f6b3a9f068b64lgentis la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7">
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Une en-tête <code>Content-Type</code> dont la syntaxe est valide
d411ae5616e929e32c8e350e12d8517057f3416cgryzor sera du style :</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Exemples d'en-têtes <code>Content-Type</code> non valides :</p>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor # invalide<br />
d411ae5616e929e32c8e350e12d8517057f3416cgryzor Content-Type: foo<br />
d411ae5616e929e32c8e350e12d8517057f3416cgryzor # vide<br />
d411ae5616e929e32c8e350e12d8517057f3416cgryzor Content-Type:
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>L'administrateur peut restreindre la politique à un ou plusieurs
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor types spécifiques, ou utiliser des caractères génériques comme
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <p>Cette politique est mise en oeuvre par le filtre
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <title>Politique de gestion des connexions persistantes (Keepalive)</title>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directivelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyKeepalive</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </directivelist>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique era rejetée si la réponse du serveur ne contient pas d'en-tête
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <code>Content-Length</code> explicite, ou d'en-tête
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <code>Transfer-Encoding</code> défini à chunked.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>De nombreuses manières pour déterminer la taille d'un
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor corps de réponse sont décrites dans la <a
4d239fe66e915d2ef73a95c0620f6b3a9f068b64lgentis href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Pour indiquer la fin de la réponse au client sans que ce dernier
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor ait à en connaître la taille au préalable, HTTP/1.1 propose
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor l'en-tête <code>Transfer-Encoding</code> comme une alternative à
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <code>Content-Length</code>. Cependant, lors du traitement de
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor requêtes HTTP/1.0, et si l'en-tête <code>Content-Length</code> est
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor absent, le seul mécanisme dont dispose le serveur pour indiquer la
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor fin de la requête consiste à couper la connexion. Dans un
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor environnement contenant des répartiteurs de charge, cela peut
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor court-circuiter le mécanisme des connexions persistantes
d411ae5616e929e32c8e350e12d8517057f3416cgryzor (keepalive).
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>En particulier, les règles suivantes sont appliquées : </p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <dd>cette connexion n'est pas marquée en erreur ;</dd>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <dd>le code de statut de la réponse ne nécessite pas de fermeture de connexion ;</dd>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <dd>le corps de la réponse a une taille définie suite au code de
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor statut 304 ou 204, la méthode de requête est HEAD, un en-tête
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor Content-Length ou Transfer-Encoding: chunked a déjà été défini, ou
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor la requête est de type HTTP/1.1 et peut donc être définie à chunked.</dd>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <note type="warning">Le serveur peut décider de désactiver les
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor connexions persistantes pour de nombreuses raisons, comme un arrêt
d411ae5616e929e32c8e350e12d8517057f3416cgryzor imminent, un Connection: close en provenance du client, ou une
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor requête client de type HTTP/1.0 dont la réponse ne comporte pas
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor d'en-tête <code>Content-Length</code>, mais pour ce qui nous
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor concerne, nous ne vérifions que la possibilité des connexions
d411ae5616e929e32c8e350e12d8517057f3416cgryzor persistantes depuis l'application, et non si les connexions
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor persistantes sont activées.</note>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <p>Notez aussi que le serveur HTTP Apache propose un filtre qui
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor ajoute un codage chunked aux réponses qui ne contiennent pas
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor d'en-tête <code>Content-Length</code> explicite. Cette politique
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor prend en compte les cas où le filtre est court-circuité ou
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor désactivé.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique est implémentée par le filtre
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <title>Durée de fraîcheur / Politique de gestion de l'âge maximum</title>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directivelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyMaxage</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </directivelist>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique se verra rejetée si la réponse du serveur ne
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor contient pas de <strong>durée de fraîcheur</strong> explicite au
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor moins grande que la limite définie par le serveur, ou si la
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor durée de fraîcheur est calculée à partir d'une heuristique.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Vous trouverez tous les détails à propos du calcul d'une durée de
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor fraîcheur dans la <a
4d239fe66e915d2ef73a95c0620f6b3a9f068b64lgentis href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.2">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Pendant la durée de fraîcheur, un cache n'a pas besoin de
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor contacter le serveur original, et il peut renvoyer le contenu situé
d411ae5616e929e32c8e350e12d8517057f3416cgryzor dans le cache tel quel au client.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Lorsque la date de péremption est atteinte, le cache doit
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor contacter le serveur original dans le but de vérifier si le contenu
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor situé dans le cache est encore à jour, et si ce n'est pas le cas, de
d411ae5616e929e32c8e350e12d8517057f3416cgryzor le remplacer par le contenu correspondant sur le serveur original.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Lorsque la durée de fraîcheur est trop courte, il peut en
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor résulter un excès de charge pour le serveur. De plus, si une
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor interruption de service survient, et si cette dernière est longue,
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor ou plus longue que la durée de fraîcheur, tout le contenu du cache
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor s'en trouvera périmé, ce qui causera un trafic très important
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor lorsque le serveur ou le réseau sera rétabli.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique est implémentée par le filtre
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <title>Politique de gestion des contenus qui ne peuvent pas être mis
d411ae5616e929e32c8e350e12d8517057f3416cgryzor en cache</title>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directivelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyNocache</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </directivelist>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique sera rejetée si la réponse du serveur
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor déclare elle-même qu'elle ne doit pas être mise en cache à l'aide
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor d'un en-tête <code>Cache-Control</code> ou <code>Pragma</code>.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Vous trouverez tous les détails à propos de la manière dont un
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor contenu peut être déclaré comme non cachable dans la <a
d411ae5616e929e32c8e350e12d8517057f3416cgryzor href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor section 14.9.1 What is Cacheable</a>, et au sein de la définition de
d411ae5616e929e32c8e350e12d8517057f3416cgryzor href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Plus précisément, si une combinaison des en-têtes suivants existe
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor dans la réponse, cette dernière sera rejetée :</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>D'une manière générale, lorsque cette politique est activée, et
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor si d'une manière inattendue un contenu non cachable peut induire un
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor niveau de charge du serveur inacceptable, tout contenu défini comme
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor non cachable par le serveur sera rejeté.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique est implémentée par le filtre
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directivelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyValidation</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </directivelist>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique sera rejetée si la réponse du serveur
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor ne contient aucune en-tête syntaxiquement correct <code>ETag</code>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Vous trouverez une description complète de l'en-tête
d411ae5616e929e32c8e350e12d8517057f3416cgryzor href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor section 14.19 Etag</a>, et de l'en-tête <code>Last-Modified</code>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.29">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>La vérification est effectuée non seulement en ce qui concerne la
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor présence des en-têtes, mais aussi du point de vue de leur syntaxe.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Si une en-tête <code>ETag</code> n'est pas entourée de guillemets,
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor ou n'est pas déclarée "weak" en le préfixant avec un "W/", la politique
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor sera rejetée. De même, si l'interprétation d'une en-tête
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <code>Last-Modified</code> ne fournit pas de date valide, la réponse
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor sera rejetée.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique est implémentée par le filtre
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <title>Politique de gestion de l'en-tête Vary</title>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directivelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyVary</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </directivelist>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique se verra rejetée si la réponse du serveur
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor contient une en-tête <code>Vary</code>, et si cette en-tête
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor contient à son tour une en-tête mise en liste noire par
d411ae5616e929e32c8e350e12d8517057f3416cgryzor l'administrateur.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>L'en-tête <code>Vary</code> est décrite en détails dans la <a
d411ae5616e929e32c8e350e12d8517057f3416cgryzor href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.44">RFC2616
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Certaines en-têtes définies par les clients, comme
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <code>User-Agent</code>, peuvent contenir des milliers ou même des
d411ae5616e929e32c8e350e12d8517057f3416cgryzor millions de combinaisons de valeurs au cours du temps, et si la
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor réponse est considérée comme pouvant être mise en cache, le cache
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor peut tenter d'enregistrer toutes ces réponses, ce qui peut l'amener
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor à saturation et à noyer les autres entrées qu'il contient. Avec ce
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor scénario, cette politique sera rejetée.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique est implémentée par le filtre
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <title>Politique de gestion des versions de protocole</title>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </modulelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directivelist>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor <directive module="mod_policy">PolicyVersion</directive>
d411ae5616e929e32c8e350e12d8517057f3416cgryzor </directivelist>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique sera rejetée si la réponse du serveur
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor a été générée avec un numéro de version inférieur à la version
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor de HTTP spécifiée.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique s'utilise en général avec les applications qui
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor nécessitent un contrôle du type du client. Elle peut être utilisée en
d411ae5616e929e32c8e350e12d8517057f3416cgryzor concomitance avec le filtre <code>POLICY_KEEPALIVE</code> afin de
d411ae5616e929e32c8e350e12d8517057f3416cgryzor s'assurer que les clients HTTP/1.0 n'engendrent pas la fermeture des
d411ae5616e929e32c8e350e12d8517057f3416cgryzor connexions persistantes.</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Les versions minimales pouvant être spécifiées sont :</p>
807b40179e949c415c3b31fd2049e6d6499dbc14gryzor <p>Cette politique est implémentée par le filtre
d411ae5616e929e32c8e350e12d8517057f3416cgryzor</manualpage>