]> granicus.if.org Git - apache/blob - docs/manual/compliance.html.fr
Documentation rebuild
[apache] / docs / manual / compliance.html.fr
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" />
5 <!--
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7               This file is generated from xml source: DO NOT EDIT
8         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9       -->
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">
15 </script>
16
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="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
23 <div id="path">
24 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.5</a></div><div id="page-content"><div id="preamble"><h1>Conformité au protocole HTTP</h1>
25 <div class="toplang">
26 <p><span>Langues Disponibles: </span><a href="./en/compliance.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
27 <a href="./fr/compliance.html" title="Français">&nbsp;fr&nbsp;</a></p>
28 </div>
29
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
33     espace d'URL.</p>
34
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
39     l'erreur.</p>
40   </div>
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
48     en cache</a></li>
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>
54 <div class="section">
55 <h2><a name="intro" id="intro">Imposer la conformité au protocole HTTP dans Apache 2</a></h2>
56     
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>
58
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>
65
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>
74
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>
78
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
86     de l'environnement.
87     </p>
88
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>
94
95     <p class="figure">
96     <img src="images/compliance-reverse-proxy.png" width="666" height="239" alt="Imposer la conformité au protocole HTTP pour un serveur     d'applications" />
97     </p>
98
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>
108
109     <p class="figure">
110     <img src="images/compliance-static.png" width="469" height="239" alt="Imposer la conformité au protocole HTTP pour un serveur statique" />
111     </p>
112
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>
118
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>
122     
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>
124
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>
127
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>
132
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>
135
136     <dl>
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>
144
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>
153
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>
161
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>
170
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>
179
180     </dl>
181
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>
187
188     <p>Cette politique est implémentée par le filtre
189     <strong>POLICY_CONDITIONAL</strong>.</p>
190
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>
194     
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>
196
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>
199
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>
203
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>
209
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
219     (keepalive).
220     </p>
221
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>
228
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>
236
237     <p>Cette politique est implémentée par le filtre
238     <strong>POLICY_LENGTH</strong>.</p>
239
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>
243     
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>
245
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>
249
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>
254
255     <p>Une en-tête <code>Content-Type</code> dont la syntaxe est valide
256     sera du style :</p>
257
258     <div class="example"><p><code>
259       Content-Type: text/html; charset=iso-8859-1
260     </code></p></div>
261
262     <p>Exemples d'en-têtes <code>Content-Type</code> non valides :</p>
263
264     <div class="example"><p><code>
265       # invalide<br />
266       Content-Type: foo<br />
267       # vide<br />
268       Content-Type:
269     </code></p></div>
270
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>
274
275     <p>Cette politique est mise en oeuvre par le filtre
276     <strong>POLICY_TYPE</strong>.</p>
277
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>
281     
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>
283
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>
287
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>
291
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
301     (keepalive).
302     </p>
303
304     <p>En particulier, les règles suivantes sont appliquées : </p>
305
306     <dl>
307     <dt>Si</dt>
308     <dd>cette connexion n'est pas marquée en erreur ;</dd>
309
310     <dt>et</dt>
311     <dd>le client n'attend pas 100-continue ;</dd>
312
313     <dt>et</dt>
314     <dd>le code de statut de la réponse ne nécessite pas de fermeture de connexion ;</dd>
315
316     <dt>et</dt>
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>
321
322     <dt>alors</dt>
323     <dd>keepalive est supporté.</dd>
324     </dl>
325
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>
334
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
339     désactivé.</p>
340
341     <p>Cette politique est implémentée par le filtre
342     <strong>POLICY_KEEPALIVE</strong>.</p>
343
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>
347     
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>
349
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>
354
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>
358
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>
362
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>
367
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>
374
375     <p>Cette politique est implémentée par le filtre
376     <strong>POLICY_MAXAGE</strong>.</p>
377
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
381     en cache</a></h2>
382     
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>
384
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>
388
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>
394
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>
397
398     <ul>
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>
403     </ul>
404
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>
409
410     <p>Cette politique est implémentée par le filtre
411     <strong>POLICY_NOCACHE</strong>.</p>
412
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>
416     
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>
418
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>
422
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>
428
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>
431
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
436     sera rejetée.</p>
437
438     <p>Cette politique est implémentée par le filtre
439     <strong>POLICY_VALIDATION</strong>.</p>
440
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>
444     
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>
446
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>
451
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>
454
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>
462
463     <p>Cette politique est implémentée par le filtre
464     <strong>POLICY_VARY</strong>.</p>
465
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>
469     
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>
471
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>
475
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>
481
482     <p>Les versions minimales pouvant être spécifiées sont :</p>
483
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>
487     </ul>
488
489     <p>Cette politique est implémentée par le filtre
490     <strong>POLICY_VERSON</strong>.</p>
491
492   </div></div>
493 <div class="bottomlang">
494 <p><span>Langues Disponibles: </span><a href="./en/compliance.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
495 <a href="./fr/compliance.html" title="Français">&nbsp;fr&nbsp;</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&amp;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';
500 (function(w, d) {
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';
505         s.async = true;
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);
508     }
509     else {
510         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
511     }
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') {
517     prettyPrint();
518 }
519 //--><!]]></script>
520 </body></html>