1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
4 <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7 This file is generated from xml source: DO NOT EDIT
8 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
10 <title>Conformité au protocole HTTP - Serveur Apache HTTP Version 2.5</title>
11 <link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12 <link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13 <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" />
14 <script src="./style/scripts/prettify.min.js" type="text/javascript">
17 <link href="./images/favicon.ico" rel="shortcut icon" /></head>
18 <body id="manual-page"><div id="page-header">
19 <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p>
20 <p class="apache">Serveur Apache HTTP Version 2.5</p>
21 <img alt="" src="./images/feather.png" /></div>
22 <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
24 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.5</a></div><div id="page-content"><div id="preamble"><h1>Conformité au protocole HTTP</h1>
26 <p><span>Langues Disponibles: </span><a href="./en/compliance.html" hreflang="en" rel="alternate" title="English"> en </a> |
27 <a href="./fr/compliance.html" title="Français"> fr </a></p>
30 <p>Ce document décrit le mécanisme utilisé pour définir une
31 politique de conformité au protocole HTTP pour un espace d'URL au
32 niveau des serveurs d'origine ou des application sous-jacentes à cet
35 <p>Chaque politique de conformité est décrite ci-dessous à
36 destination de tous ceux qui ont reçu un message d'erreur suite à un
37 rejet en provenance d'une politique, et ont donc besoin de savoir à
38 quoi est du ce rejet et ce qu'ils doivent faire pour corriger
41 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#intro">Imposer la conformité au protocole HTTP dans Apache 2</a></li>
42 <li><img alt="" src="./images/down.gif" /> <a href="#policyconditional">Politique des requêtes conditionnelles</a></li>
43 <li><img alt="" src="./images/down.gif" /> <a href="#policylength">Politique de gestion de l'en-tête Content-Length</a></li>
44 <li><img alt="" src="./images/down.gif" /> <a href="#policytype">Politique de filtrage de l'en-tête Content-Type</a></li>
45 <li><img alt="" src="./images/down.gif" /> <a href="#policykeepalive">Politique de gestion des connexions persistantes (Keepalive)</a></li>
46 <li><img alt="" src="./images/down.gif" /> <a href="#policymaxage">Durée de fraîcheur / Politique de gestion de l'âge maximum</a></li>
47 <li><img alt="" src="./images/down.gif" /> <a href="#policynocache">Politique de gestion des contenus qui ne peuvent pas être mis
49 <li><img alt="" src="./images/down.gif" /> <a href="#policyvalidation">Politique de validation</a></li>
50 <li><img alt="" src="./images/down.gif" /> <a href="#policyvary">Politique de gestion de l'en-tête Vary</a></li>
51 <li><img alt="" src="./images/down.gif" /> <a href="#policyversion">Politique de gestion des versions de protocole</a></li>
52 </ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="filter.html">Filtres</a></li><li><a href="#comments_section">Commentaires</a></li></ul></div>
53 <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
55 <h2><a name="intro" id="intro">Imposer la conformité au protocole HTTP dans Apache 2</a></h2>
57 <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_policy.html">mod_policy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_policy.html#policyconditional">PolicyConditional</a></code></li><li><code class="directive"><a href="./mod/mod_policy.html#policylength">PolicyLength</a></code></li><li><code class="directive"><a href="./mod/mod_policy.html#policykeepalive">PolicyKeepalive</a></code></li><li><code class="directive"><a href="./mod/mod_policy.html#policytype">PolicyType</a></code></li><li><code class="directive"><a href="./mod/mod_policy.html#policyvary">PolicyVary</a></code></li><li><code class="directive"><a href="./mod/mod_policy.html#policyvalidation">PolicyValidation</a></code></li><li><code class="directive"><a href="./mod/mod_policy.html#policynocache">PolicyNocache</a></code></li><li><code class="directive"><a href="./mod/mod_policy.html#policymaxage">PolicyMaxage</a></code></li><li><code class="directive"><a href="./mod/mod_policy.html#policyversion">PolicyVersion</a></code></li></ul></td></tr></table>
59 <p>Le protocole HTTP applique le <strong>principe de
60 robustesse</strong> décrit dans la <a href="http://tools.ietf.org/html/rfc1122">RFC1122</a>, et stipulant
61 <strong>"Soyez libéral pour ce que vous acceptez, conservateur pour
62 ce que vous envoyez"</strong>. Selon ce principe, les clients HTTP
63 vont compenser en corrigeant les réponses incorrectes ou mal
64 configurées, ou ne pouvant pas être mises en cache.</p>
66 <p>Comme un site web est configuré pour faire face à un trafic
67 toujours grandissant, des applications mal configurées ou non
68 optimisées ou certaines configurations de serveur peuvent menacer la stabilité
69 et l'évolutivité du site web, ainsi que les coûts d'hébergement qui
70 y sont associés. L'évolution d'un site web pour faire face à une
71 complexité croissante de sa configuration accroît les
72 difficultés rencontrées pour détecter et enregistrer les espaces
73 d'URL mal configurés pour un serveur donné.</p>
75 <p>De ce fait, un point peut être atteint où le principe
76 "conservateur pour ce que vous envoyez" doit être imposé par
77 l'administrateur du serveur.</p>
79 <p>Le module <code class="module"><a href="./mod/mod_policy.html">mod_policy</a></code> fournit un jeu de filtres
80 qui peuvent être appliqués à un serveur, permettant de tester
81 explicitement les points clé du protocle HTTP, et de journaliser en
82 tant qu'avertissements les réponses non conformes, ou même de
83 simplement les rejeter avec un code d'erreur. Chaque filtre peut
84 être appliqué séparément, permettant à l'administrateur de choisir
85 quelles politiques de conformité doivent être imposées en fonction
89 <p>Les filtres peuvent être mis en place dans des environnements de
90 test ou de simulation à destination des développeurs d'applications
91 et de sites web, ou s'appliquer à des serveurs en production pour
92 protéger l'infrastructure de systèmes en dehors du contrôle direct
93 de l'administrateur.</p>
96 <img src="images/compliance-reverse-proxy.png" width="666" height="239" alt="Imposer la conformité au protocole HTTP pour un serveur d'applications" />
99 <p>Dans l'exemple ci-dessus, un serveur Apache httpd a été intercalé
100 entre le serveur d'applications et l'internet au sens large, et
101 configuré pour mettre en cache les réponses en provenance du serveur
102 d'applications. Les filtres de <code class="module"><a href="./mod/mod_policy.html">mod_policy</a></code> ont été
103 ajoutés pour imposer le support de la mise en cache de contenu et
104 des requêtes conditionnelles, assurant ainsi que
105 <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> et les caches publics de l'internet
106 seront pleinement capables de mettre en cache le contenu créé avec
107 efficacité par le serveur d'applications.</p>
110 <img src="images/compliance-static.png" width="469" height="239" alt="Imposer la conformité au protocole HTTP pour un serveur statique" />
113 <p>Dans l'exemple plus simple ci-dessus, un serveur statique qui
114 sert du contenu ayant une forte probabilité d'être mis en cache,
115 se voit appliqué un jeu de règles afin de
116 s'assurer que sa configuration respecte un niveau minimum de
117 conformité au protocole HTTP.</p>
119 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
120 <div class="section">
121 <h2><a name="policyconditional" id="policyconditional">Politique des requêtes conditionnelles</a></h2>
123 <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_policy.html">mod_policy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_policy.html#policyconditional">PolicyConditional</a></code></li></ul></td></tr></table>
125 <p>Cette politique sera rejetée si le serveur ne répond pas à une
126 requête conditionnelle avec le code d'état approprié. </p>
128 <p>C'est grâce aux requêtes conditionnelles qu'un cache HTTP peut
129 rafraîchir un contenu périmé, et en particulier dans le cas des
130 contenus à durée de validité courte, l'absence de support des
131 requêtes conditionnelles peut augmenter la charge du serveur.</p>
133 <p>Plus particulièrement, la présence d'une des en-têtes suivantes
134 dans la requête rend cette dernière conditionnelle :</p>
137 <dt><code>If-Match</code></dt>
138 <dd>Si l'ETag fourni dans l'en-tête <code>If-Match</code> ne
139 correspond pas à l'ETag de la réponse, le serveur doit renvoyer un
140 code d'erreur <code>412 Precondition Failed</code>. Vous trouverez
141 tous les détails du traitement d'un en-tête <code>If-Match</code>
142 dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.24">RFC2616
143 section 14.24</a>.</dd>
145 <dt><code>If-None-Match</code></dt>
146 <dd>Si l'ETag fourni dans l'en-tête <code>If-None-Match</code>
147 correspond à l'ETag de la réponse, le serveur doit renvoyer soit
148 <code>304 Not Modified</code> pour les requêtes GET/HEAD, soit
149 <code>412 Precondition Failed</code> pour les autres méthodes. Vous trouverez
150 tous les détails du traitement d'un en-tête
151 <code>If-None-Match</code> dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26">RFC2616
152 section 14.26</a>.</dd>
154 <dt><code>If-Modified-Since</code></dt>
155 <dd>Si la date fournie dans l'en-tête <code>If-Modified-Since</code>
156 est plus ancienne que celle de l'en-tête <code>Last-Modified</code>
157 de la réponse, le serveur doit renvoyer <code>304 Not Modified</code>. Vous trouverez
158 tous les détails du traitement d'un en-tête
159 <code>If-Modified-Since</code> dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.25">RFC2616
160 section 14.25</a>.</dd>
162 <dt><code>If-Unmodified-Since</code></dt>
163 <dd>Si la date fournie dans l'en-tête
164 <code>If-Unmodified-Since</code> est plus récente que celle de
165 l'en-tête <code>Last-Modified</code> de la réponse, le serveur doit
166 renvoyer <code>412 Precondition Failed</code>. Vous trouverez
167 tous les détails du traitement d'un en-tête
168 <code>If-Unmodified-Since</code> dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.28">RFC2616
169 section 14.28</a>.</dd>
171 <dt><code>If-Range</code></dt>
172 <dd>Si l'ETag fourni dans l'en-tête <code>If-Range</code> correspond
173 à l'ETag ou à l'en-tête Last-Modified de la réponse, et si un
174 en-tête <code>Range</code> valide est présent, le serveur doit
175 renvoyer <code>206 Partial Response</code>. Vous trouverez
176 tous les détails du traitement d'un en-tête <code>If-Range</code>
177 dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.27">RFC2616
178 section 14.27</a>.</dd>
182 <p>Si la réponse est considérée comme ayant réussi (une réponse
183 2xx), alors qu'elle était conditionnelle et qu'une des réponses
184 ci-dessus était attendue à la place, cette politique sera rejetée.
185 Les réponses qui indiquent une redirection ou une erreur de toute
186 sorte (3xx, 4xx, 5xx) seront ignorées de cette politique.</p>
188 <p>Cette politique est implémentée par le filtre
189 <strong>POLICY_CONDITIONAL</strong>.</p>
191 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
192 <div class="section">
193 <h2><a name="policylength" id="policylength">Politique de gestion de l'en-tête Content-Length</a></h2>
195 <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_policy.html">mod_policy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_policy.html#policylength">PolicyLength</a></code></li></ul></td></tr></table>
197 <p>Cette politique sera rejetée si la réponse du serveur ne contient pas d'en-tête
198 <code>Content-Length</code> explicite.</p>
200 <p>De nombreuses méthodes pour déterminer la taille d'un
201 corps de réponse sont décrites dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4">RFC2616
202 section 4.4 Message Length</a>.</p>
204 <p>Lorsque l'en-tête <code>Content-Length</code> est présente, la
205 taille du corps est déclarée au début de la réponse. Si cette
206 information est manquante, un cache HTTP pourrait choisir d'ignorer
207 la réponse, car il ne pourrait pas déterminer a priori si la réponse
208 reste dans les limites définies du cache.</p>
210 <p>Pour indiquer la fin de la réponse au client sans que ce dernier
211 ait à en connaître la taille au préalable, HTTP/1.1 propose
212 l'en-tête <code>Transfer-Encoding</code> comme une alternative à
213 <code>Content-Length</code>. Cependant, lors du traitement de
214 requêtes HTTP/1.0, et si l'en-tête <code>Content-Length</code> est
215 absente, le seul mécanisme dont dispose le serveur pour indiquer la
216 fin de la requête consiste à couper la connexion. Dans un
217 environnement contenant des répartiteurs de charge, cela peut
218 court-circuiter le mécanisme des connexions persistantes
222 <p>Si la réponse est considérée comme réussie (une réponse 2xx) et
223 possède un corps (ce qui exclut les réponses <code>204 No
224 Content</code>), et si l'en-tête <code>Content-Length</code> est
225 absente, la réponse sera rejetée. Aucune réponse indiquant une
226 redirection ou une erreur de toute nature (3xx, 4xx, 5xx) n'est
227 prise en compte par cette politique.</p>
229 <div class="warning">Notez que certains modules comme
230 <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> ajoutent leur propre en-tête
231 <code>Content-Length</code> sous réserve que la réponse où cette
232 en-tête est absente soit suffisamment courte pour que le module ait
233 pu la lire en une seule passe. De ce fait, des réponses courtes pourront
234 être acceptées par la politique, alors que d'autres plus longues
235 seront rejetées pour la même URL.</div>
237 <p>Cette politique est implémentée par le filtre
238 <strong>POLICY_LENGTH</strong>.</p>
240 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
241 <div class="section">
242 <h2><a name="policytype" id="policytype">Politique de filtrage de l'en-tête Content-Type</a></h2>
244 <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_policy.html">mod_policy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_policy.html#policytype">PolicyType</a></code></li></ul></td></tr></table>
246 <p>Cette politique sera rejetée si la réponse du serveur ne contient pas d'en-tête
247 <code>Content-Type</code> explicite et valide du point de vue de la
248 syntaxe, correspondant au modèle défini par le serveur.</p>
250 <p>Le type de media du corps est placé dans une en-tête
251 <code>Content-Type</code> dont le format est décrit en détail dans
252 la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7">
253 RFC2616 section 3.7 Media Types</a>.</p>
255 <p>Une en-tête <code>Content-Type</code> dont la syntaxe est valide
258 <div class="example"><p><code>
259 Content-Type: text/html; charset=iso-8859-1
262 <p>Exemples d'en-têtes <code>Content-Type</code> non valides :</p>
264 <div class="example"><p><code>
266 Content-Type: foo<br />
271 <p>L'administrateur peut restreindre la politique à un ou plusieurs
272 types spécifiques, ou utiliser des caractères génériques comme
273 <code>*/*</code>.</p>
275 <p>Cette politique est mise en oeuvre par le filtre
276 <strong>POLICY_TYPE</strong>.</p>
278 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
279 <div class="section">
280 <h2><a name="policykeepalive" id="policykeepalive">Politique de gestion des connexions persistantes (Keepalive)</a></h2>
282 <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_policy.html">mod_policy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_policy.html#policykeepalive">PolicyKeepalive</a></code></li></ul></td></tr></table>
284 <p>Cette politique era rejetée si la réponse du serveur ne contient pas d'en-tête
285 <code>Content-Length</code> explicite, ou d'en-tête
286 <code>Transfer-Encoding</code> défini à chunked.</p>
288 <p>De nombreuses manières pour déterminer la taille d'un
289 corps de réponse sont décrites dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4">RFC2616
290 section 4.4 Message Length</a>.</p>
292 <p>Pour indiquer la fin de la réponse au client sans que ce dernier
293 ait à en connaître la taille au préalable, HTTP/1.1 propose
294 l'en-tête <code>Transfer-Encoding</code> comme une alternative à
295 <code>Content-Length</code>. Cependant, lors du traitement de
296 requêtes HTTP/1.0, et si l'en-tête <code>Content-Length</code> est
297 absent, le seul mécanisme dont dispose le serveur pour indiquer la
298 fin de la requête consiste à couper la connexion. Dans un
299 environnement contenant des répartiteurs de charge, cela peut
300 court-circuiter le mécanisme des connexions persistantes
304 <p>En particulier, les règles suivantes sont appliquées : </p>
308 <dd>cette connexion n'est pas marquée en erreur ;</dd>
311 <dd>le client n'attend pas 100-continue ;</dd>
314 <dd>le code de statut de la réponse ne nécessite pas de fermeture de connexion ;</dd>
317 <dd>le corps de la réponse a une taille définie suite au code de
318 statut 304 ou 204, la méthode de requête est HEAD, un en-tête
319 Content-Length ou Transfer-Encoding: chunked a déjà été défini, ou
320 la requête est de type HTTP/1.1 et peut donc être définie à chunked.</dd>
323 <dd>keepalive est supporté.</dd>
326 <div class="warning">Le serveur peut décider de désactiver les
327 connexions persistantes pour de nombreuses raisons, comme un arrêt
328 imminent, un Connection: close en provenance du client, ou une
329 requête client de type HTTP/1.0 dont la réponse ne comporte pas
330 d'en-tête <code>Content-Length</code>, mais pour ce qui nous
331 concerne, nous ne vérifions que la possibilité des connexions
332 persistantes depuis l'application, et non si les connexions
333 persistantes sont activées.</div>
335 <p>Notez aussi que le serveur HTTP Apache propose un filtre qui
336 ajoute un codage chunked aux réponses qui ne contiennent pas
337 d'en-tête <code>Content-Length</code> explicite. Cette politique
338 prend en compte les cas où le filtre est court-circuité ou
341 <p>Cette politique est implémentée par le filtre
342 <strong>POLICY_KEEPALIVE</strong>.</p>
344 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
345 <div class="section">
346 <h2><a name="policymaxage" id="policymaxage">Durée de fraîcheur / Politique de gestion de l'âge maximum</a></h2>
348 <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_policy.html">mod_policy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_policy.html#policymaxage">PolicyMaxage</a></code></li></ul></td></tr></table>
350 <p>Cette politique se verra rejetée si la réponse du serveur ne
351 contient pas de <strong>durée de fraîcheur</strong> explicite au
352 moins grande que la limite définie par le serveur, ou si la
353 durée de fraîcheur est calculée à partir d'une heuristique.</p>
355 <p>Vous trouverez tous les détails à propos du calcul d'une durée de
356 fraîcheur dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.2">RFC2616
357 section 13.2 Expiration Model</a>.</p>
359 <p>Pendant la durée de fraîcheur, un cache n'a pas besoin de
360 contacter le serveur original, et il peut renvoyer le contenu situé
361 dans le cache tel quel au client.</p>
363 <p>Lorsque la date de péremption est atteinte, le cache doit
364 contacter le serveur original dans le but de vérifier si le contenu
365 situé dans le cache est encore à jour, et si ce n'est pas le cas, de
366 le remplacer par le contenu correspondant sur le serveur original.</p>
368 <p>Lorsque la durée de fraîcheur est trop courte, il peut en
369 résulter un excès de charge pour le serveur. De plus, si une
370 interruption de service survient, et si cette dernière est longue,
371 ou plus longue que la durée de fraîcheur, tout le contenu du cache
372 s'en trouvera périmé, ce qui causera un trafic très important
373 lorsque le serveur ou le réseau sera rétabli.</p>
375 <p>Cette politique est implémentée par le filtre
376 <strong>POLICY_MAXAGE</strong>.</p>
378 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
379 <div class="section">
380 <h2><a name="policynocache" id="policynocache">Politique de gestion des contenus qui ne peuvent pas être mis
383 <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_policy.html">mod_policy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_policy.html#policynocache">PolicyNocache</a></code></li></ul></td></tr></table>
385 <p>Cette politique sera rejetée si la réponse du serveur
386 déclare elle-même qu'elle ne doit pas être mise en cache à l'aide
387 d'un en-tête <code>Cache-Control</code> ou <code>Pragma</code>.</p>
389 <p>Vous trouverez tous les détails à propos de la manière dont un
390 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
391 section 14.9.1 What is Cacheable</a>, et au sein de la définition de
392 l'en-tête <code>Pragma</code> dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32">RFC2616
393 section 14.32 Pragma</a>.</p>
395 <p>Plus précisément, si une combinaison des en-têtes suivants existe
396 dans la réponse, cette dernière sera rejetée :</p>
399 <li><code>Cache-Control: no-cache</code></li>
400 <li><code>Cache-Control: no-store</code></li>
401 <li><code>Cache-Control: private</code></li>
402 <li><code>Pragma: no-cache</code></li>
405 <p>D'une manière générale, lorsque cette politique est activée, et
406 si d'une manière inattendue un contenu non cachable peut induire un
407 niveau de charge du serveur inacceptable, tout contenu défini comme
408 non cachable par le serveur sera rejeté.</p>
410 <p>Cette politique est implémentée par le filtre
411 <strong>POLICY_NOCACHE</strong>.</p>
413 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
414 <div class="section">
415 <h2><a name="policyvalidation" id="policyvalidation">Politique de validation</a></h2>
417 <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_policy.html">mod_policy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_policy.html#policyvalidation">PolicyValidation</a></code></li></ul></td></tr></table>
419 <p>Cette politique sera rejetée si la réponse du serveur
420 ne contient aucune en-tête syntaxiquement correct <code>ETag</code>
421 ou <code>Last-Modified</code>.</p>
423 <p>Vous trouverez une description complète de l'en-tête
424 <code>ETag</code> dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19">RFC2616
425 section 14.19 Etag</a>, et de l'en-tête <code>Last-Modified</code>
426 dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.29">RFC2616
427 section 14.29 Last-Modified</a>.</p>
429 <p>La vérification est effectuée non seulement en ce qui concerne la
430 présence des en-têtes, mais aussi du point de vue de leur syntaxe.</p>
432 <p>Si une en-tête <code>ETag</code> n'est pas entourée de guillemets,
433 ou n'est pas déclarée "weak" en le préfixant avec un "W/", la politique
434 sera rejetée. De même, si l'interprétation d'une en-tête
435 <code>Last-Modified</code> ne fournit pas de date valide, la réponse
438 <p>Cette politique est implémentée par le filtre
439 <strong>POLICY_VALIDATION</strong>.</p>
441 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
442 <div class="section">
443 <h2><a name="policyvary" id="policyvary">Politique de gestion de l'en-tête Vary</a></h2>
445 <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_policy.html">mod_policy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_policy.html#policyvary">PolicyVary</a></code></li></ul></td></tr></table>
447 <p>Cette politique se verra rejetée si la réponse du serveur
448 contient une en-tête <code>Vary</code>, et si cette en-tête
449 contient à son tour une en-tête mise en liste noire par
450 l'administrateur.</p>
452 <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
453 section 14.44 Vary</a>.</p>
455 <p>Certaines en-têtes définies par les clients, comme
456 <code>User-Agent</code>, peuvent contenir des milliers ou même des
457 millions de combinaisons de valeurs au cours du temps, et si la
458 réponse est considérée comme pouvant être mise en cache, le cache
459 peut tenter d'enregistrer toutes ces réponses, ce qui peut l'amener
460 à saturation et à noyer les autres entrées qu'il contient. Avec ce
461 scénario, cette politique sera rejetée.</p>
463 <p>Cette politique est implémentée par le filtre
464 <strong>POLICY_VARY</strong>.</p>
466 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
467 <div class="section">
468 <h2><a name="policyversion" id="policyversion">Politique de gestion des versions de protocole</a></h2>
470 <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_policy.html">mod_policy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_policy.html#policyversion">PolicyVersion</a></code></li></ul></td></tr></table>
472 <p>Cette politique sera rejetée si la réponse du serveur
473 a été générée avec un numéro de version inférieur à la version
474 de HTTP spécifiée.</p>
476 <p>Cette politique s'utilise en général avec les applications qui
477 nécessitent un contrôle du type du client. Elle peut être utilisée en
478 concomitance avec le filtre <code>POLICY_KEEPALIVE</code> afin de
479 s'assurer que les clients HTTP/1.0 n'engendrent pas la fermeture des
480 connexions persistantes.</p>
482 <p>Les versions minimales pouvant être spécifiées sont :</p>
484 <ul><li><code>HTTP/1.1</code></li>
485 <li><code>HTTP/1.0</code></li>
486 <li><code>HTTP/0.9</code></li>
489 <p>Cette politique est implémentée par le filtre
490 <strong>POLICY_VERSON</strong>.</p>
493 <div class="bottomlang">
494 <p><span>Langues Disponibles: </span><a href="./en/compliance.html" hreflang="en" rel="alternate" title="English"> en </a> |
495 <a href="./fr/compliance.html" title="Français"> fr </a></p>
496 </div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />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 <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
497 <script type="text/javascript"><!--//--><![CDATA[//><!--
498 var comments_shortname = 'httpd';
499 var comments_identifier = 'http://httpd.apache.org/docs/trunk/compliance.html';
501 if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
502 d.write('<div id="comments_thread"><\/div>');
503 var s = d.createElement('script');
504 s.type = 'text/javascript';
506 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
507 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
510 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
512 })(window, document);
513 //--><!]]></script></div><div id="footer">
514 <p class="apache">Copyright 2017 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
515 <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
516 if (typeof(prettyPrint) !== 'undefined') {