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