]> granicus.if.org Git - apache/blob - docs/manual/compliance.xml.fr
Help doc writer to spot places where:
[apache] / docs / manual / compliance.xml.fr
1 <?xml version="1.0" ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
4 <!-- English Revision: 1673947 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
7
8 <!--
9  Licensed to the Apache Software Foundation (ASF) under one or more
10  contributor license agreements.  See the NOTICE file distributed with
11  this work for additional information regarding copyright ownership.
12  The ASF licenses this file to You under the Apache License, Version 2.0
13  (the "License"); you may not use this file except in compliance with
14  the License.  You may obtain a copy of the License at
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
18  Unless required by applicable law or agreed to in writing, software
19  distributed under the License is distributed on an "AS IS" BASIS,
20  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  See the License for the specific language governing permissions and
22  limitations under the License.
23 -->
24
25 <manualpage metafile="compliance.xml.meta">
26
27   <title>Conformit&eacute; au protocole HTTP</title>
28
29   <summary>
30     <p>Ce document d&eacute;crit le m&eacute;canisme utilis&eacute; pour d&eacute;finir une
31     politique de conformit&eacute; au protocole HTTP pour un espace d'URL au
32     niveau des serveurs d'origine ou des application sous-jacentes &agrave; cet
33     espace d'URL.</p>
34
35     <p>Chaque politique de conformit&eacute; est d&eacute;crite ci-dessous &agrave;
36     destination de tous ceux qui ont re&ccedil;u un message d'erreur suite &agrave; un
37     rejet en provenance d'une politique, et ont donc besoin de savoir &agrave;
38     quoi est du ce rejet et ce qu'ils doivent faire pour corriger
39     l'erreur.</p>
40   </summary>
41   <seealso><a href="filter.html">Filtres</a></seealso>
42
43   <section id="intro">
44     <title>Imposer la conformit&eacute; au protocole HTTP dans Apache 2</title>
45     <related>
46       <modulelist>
47         <module>mod_policy</module>
48       </modulelist>
49       <directivelist>
50         <directive module="mod_policy">PolicyConditional</directive>
51         <directive module="mod_policy">PolicyLength</directive>
52         <directive module="mod_policy">PolicyKeepalive</directive>
53         <directive module="mod_policy">PolicyType</directive>
54         <directive module="mod_policy">PolicyVary</directive>
55         <directive module="mod_policy">PolicyValidation</directive>
56         <directive module="mod_policy">PolicyNocache</directive>
57         <directive module="mod_policy">PolicyMaxage</directive>
58         <directive module="mod_policy">PolicyVersion</directive>
59       </directivelist>
60     </related>
61
62     <p>Le protocole HTTP applique le <strong>principe de
63     robustesse</strong> d&eacute;crit dans la <a
64     href="http://tools.ietf.org/html/rfc1122">RFC1122</a>, et stipulant
65     <strong>"Soyez lib&eacute;ral pour ce que vous acceptez, conservateur pour
66     ce que vous envoyez"</strong>. Selon ce principe, les clients HTTP
67     vont compenser en corrigeant les r&eacute;ponses incorrectes ou mal
68     configur&eacute;es, ou ne pouvant pas &ecirc;tre mises en cache.</p>
69
70     <p>Comme un site web est configur&eacute; pour faire face &agrave; un trafic
71     toujours grandissant, des applications mal configur&eacute;es ou non
72     optimis&eacute;es ou certaines configurations de serveur peuvent menacer la stabilit&eacute;
73     et l'&eacute;volutivit&eacute; du site web, ainsi que les co&ucirc;ts d'h&eacute;bergement qui
74     y sont associ&eacute;s. L'&eacute;volution d'un site web pour faire face &agrave; une
75     complexit&eacute; croissante de sa configuration accro&icirc;t les
76     difficult&eacute;s rencontr&eacute;es pour d&eacute;tecter et enregistrer les espaces
77     d'URL mal configur&eacute;s pour un serveur donn&eacute;.</p>
78
79     <p>De ce fait, un point peut &ecirc;tre atteint o&ugrave; le principe
80     "conservateur pour ce que vous envoyez" doit &ecirc;tre impos&eacute; par
81     l'administrateur du serveur.</p>
82
83     <p>Le module <module>mod_policy</module> fournit un jeu de filtres
84     qui peuvent &ecirc;tre appliqu&eacute;s &agrave; un serveur, permettant de tester
85     explicitement les points cl&eacute; du protocle HTTP, et de journaliser en
86     tant qu'avertissements les r&eacute;ponses non conformes, ou m&ecirc;me de
87     simplement les rejeter avec un code d'erreur. Chaque filtre peut
88     &ecirc;tre appliqu&eacute; s&eacute;par&eacute;ment, permettant &agrave; l'administrateur de choisir
89     quelles politiques de conformit&eacute; doivent &ecirc;tre impos&eacute;es en fonction
90     de l'environnement.
91     </p>
92
93     <p>Les filtres peuvent &ecirc;tre mis en place dans des environnements de
94     test ou de simulation &agrave; destination des d&eacute;veloppeurs d'applications
95     et de sites web, ou s'appliquer &agrave; des serveurs en production pour
96     prot&eacute;ger l'infrastructure de syst&egrave;mes en dehors du contr&ocirc;le direct
97     de l'administrateur.</p>
98
99     <p class="figure">
100     <img src="images/compliance-reverse-proxy.png" width="666" height="239" alt=
101     "Imposer la conformit&eacute; au protocole HTTP pour un serveur
102     d'applications"/>
103     </p>
104
105     <p>Dans l'exemple ci-dessus, un serveur Apache httpd a &eacute;t&eacute; intercal&eacute;
106     entre le serveur d'applications et l'internet au sens large, et
107     configur&eacute; pour mettre en cache les r&eacute;ponses en provenance du serveur
108     d'applications. Les filtres de <module>mod_policy</module> ont &eacute;t&eacute;
109     ajout&eacute;s pour imposer le support de la mise en cache de contenu et
110     des requ&ecirc;tes conditionnelles, assurant ainsi que
111     <module>mod_cache</module> et les caches publics de l'internet
112     seront pleinement capables de mettre en cache le contenu cr&eacute;&eacute; avec
113     efficacit&eacute; par le serveur d'applications.</p>
114
115     <p class="figure">
116     <img src="images/compliance-static.png" width="469" height="239" alt=
117     "Imposer la conformit&eacute; au protocole HTTP pour un serveur statique"/>
118     </p>
119
120     <p>Dans l'exemple plus simple ci-dessus, un serveur statique qui
121     sert du contenu ayant une forte probabilit&eacute; d'&ecirc;tre mis en cache,
122     se voit appliqu&eacute; un jeu de r&egrave;gles afin de
123     s'assurer que sa configuration respecte un niveau minimum de
124     conformit&eacute; au protocole HTTP.</p>
125
126   </section>
127
128   <section id="policyconditional">
129     <title>Politique des requ&ecirc;tes conditionnelles</title>
130     <related>
131       <modulelist>
132         <module>mod_policy</module>
133       </modulelist>
134       <directivelist>
135         <directive module="mod_policy">PolicyConditional</directive>
136       </directivelist>
137     </related>
138
139     <p>Cette politique sera rejet&eacute;e si le serveur ne r&eacute;pond pas &agrave; une
140     requ&ecirc;te conditionnelle avec le code d'&eacute;tat appropri&eacute;. </p>
141
142     <p>C'est gr&acirc;ce aux requ&ecirc;tes conditionnelles qu'un cache HTTP peut
143     rafra&icirc;chir un contenu p&eacute;rim&eacute;, et en particulier dans le cas des
144     contenus &agrave; dur&eacute;e de validit&eacute; courte, l'absence de support des
145     requ&ecirc;tes conditionnelles peut augmenter la charge du serveur.</p>
146
147     <p>Plus particuli&egrave;rement, la pr&eacute;sence d'une des en-t&ecirc;tes suivantes
148     dans la requ&ecirc;te rend cette derni&egrave;re conditionnelle :</p>
149
150     <dl>
151     <dt><code>If-Match</code></dt>
152     <dd>Si l'ETag fourni dans l'en-t&ecirc;te <code>If-Match</code> ne
153     correspond pas &agrave; l'ETag de la r&eacute;ponse, le serveur doit renvoyer un
154     code d'erreur <code>412 Precondition Failed</code>. Vous trouverez
155     tous les d&eacute;tails du traitement d'un en-t&ecirc;te <code>If-Match</code>
156     dans la <a
157     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.24">RFC2616
158     section 14.24</a>.</dd>
159
160     <dt><code>If-None-Match</code></dt>
161     <dd>Si l'ETag fourni dans l'en-t&ecirc;te <code>If-None-Match</code>
162     correspond &agrave; l'ETag de la r&eacute;ponse, le serveur doit renvoyer soit
163     <code>304 Not Modified</code> pour les requ&ecirc;tes GET/HEAD, soit
164     <code>412 Precondition Failed</code> pour les autres m&eacute;thodes. Vous trouverez
165     tous les d&eacute;tails du traitement d'un en-t&ecirc;te
166     <code>If-None-Match</code> dans la <a
167     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26">RFC2616
168     section 14.26</a>.</dd>
169
170     <dt><code>If-Modified-Since</code></dt>
171     <dd>Si la date fournie dans l'en-t&ecirc;te <code>If-Modified-Since</code>
172     est plus ancienne que celle de l'en-t&ecirc;te <code>Last-Modified</code>
173     de la r&eacute;ponse, le serveur doit renvoyer <code>304 Not Modified</code>. Vous trouverez
174     tous les d&eacute;tails du traitement d'un en-t&ecirc;te
175     <code>If-Modified-Since</code> dans la <a
176     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.25">RFC2616
177     section 14.25</a>.</dd>
178
179     <dt><code>If-Unmodified-Since</code></dt>
180     <dd>Si la date fournie dans l'en-t&ecirc;te
181     <code>If-Unmodified-Since</code> est plus r&eacute;cente que celle de
182     l'en-t&ecirc;te <code>Last-Modified</code> de la r&eacute;ponse, le serveur doit
183     renvoyer <code>412 Precondition Failed</code>. Vous trouverez
184     tous les d&eacute;tails du traitement d'un en-t&ecirc;te
185     <code>If-Unmodified-Since</code> dans la <a
186     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.28">RFC2616
187     section 14.28</a>.</dd>
188
189     <dt><code>If-Range</code></dt>
190     <dd>Si l'ETag fourni dans l'en-t&ecirc;te <code>If-Range</code> correspond
191     &agrave; l'ETag ou &agrave; l'en-t&ecirc;te Last-Modified de la r&eacute;ponse, et si un
192     en-t&ecirc;te <code>Range</code> valide est pr&eacute;sent, le serveur doit
193     renvoyer <code>206 Partial Response</code>. Vous trouverez
194     tous les d&eacute;tails du traitement d'un en-t&ecirc;te <code>If-Range</code>
195     dans la <a
196     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.27">RFC2616
197     section 14.27</a>.</dd>
198
199     </dl>
200
201     <p>Si la r&eacute;ponse est consid&eacute;r&eacute;e comme ayant r&eacute;ussi (une r&eacute;ponse
202     2xx), alors qu'elle &eacute;tait conditionnelle et qu'une des r&eacute;ponses
203     ci-dessus &eacute;tait attendue &agrave; la place, cette politique sera rejet&eacute;e.
204     Les r&eacute;ponses qui indiquent une redirection ou une erreur de toute
205     sorte (3xx, 4xx, 5xx) seront ignor&eacute;es de cette politique.</p>
206
207     <p>Cette politique est impl&eacute;ment&eacute;e par le filtre
208     <strong>POLICY_CONDITIONAL</strong>.</p>
209
210   </section>
211
212   <section id="policylength">
213     <title>Politique de gestion de l'en-t&ecirc;te Content-Length</title>
214     <related>
215       <modulelist>
216         <module>mod_policy</module>
217       </modulelist>
218       <directivelist>
219         <directive module="mod_policy">PolicyLength</directive>
220       </directivelist>
221     </related>
222
223     <p>Cette politique sera rejet&eacute;e si la r&eacute;ponse du serveur ne contient pas d'en-t&ecirc;te
224     <code>Content-Length</code> explicite.</p>
225
226     <p>De nombreuses m&eacute;thodes pour d&eacute;terminer la taille d'un
227     corps de r&eacute;ponse sont d&eacute;crites dans la <a
228     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4">RFC2616
229     section 4.4 Message Length</a>.</p>
230
231     <p>Lorsque l'en-t&ecirc;te <code>Content-Length</code> est pr&eacute;sente, la
232     taille du corps est d&eacute;clar&eacute;e au d&eacute;but de la r&eacute;ponse. Si cette
233     information est manquante, un cache HTTP pourrait choisir d'ignorer
234     la r&eacute;ponse, car il ne pourrait pas d&eacute;terminer a priori si la r&eacute;ponse
235     reste dans les limites d&eacute;finies du cache.</p>
236
237     <p>Pour indiquer la fin de la r&eacute;ponse au client sans que ce dernier
238     ait &agrave; en conna&icirc;tre la taille au pr&eacute;alable, HTTP/1.1 propose
239     l'en-t&ecirc;te <code>Transfer-Encoding</code> comme une alternative &agrave;
240     <code>Content-Length</code>. Cependant, lors du traitement de
241     requ&ecirc;tes HTTP/1.0, et si l'en-t&ecirc;te <code>Content-Length</code> est
242     absente, le seul m&eacute;canisme dont dispose le serveur pour indiquer la
243     fin de la requ&ecirc;te consiste &agrave; couper la connexion. Dans un
244     environnement contenant des r&eacute;partiteurs de charge, cela peut
245     court-circuiter le m&eacute;canisme des connexions persistantes
246     (keepalive).
247     </p>
248
249     <p>Si la r&eacute;ponse est consid&eacute;r&eacute;e comme r&eacute;ussie (une r&eacute;ponse 2xx) et
250     poss&egrave;de un corps (ce qui exclut les r&eacute;ponses <code>204 No
251     Content</code>), et si l'en-t&ecirc;te <code>Content-Length</code> est
252     absente, la r&eacute;ponse sera rejet&eacute;e. Aucune r&eacute;ponse indiquant une
253     redirection ou une erreur de toute nature (3xx, 4xx, 5xx) n'est
254     prise en compte par cette politique.</p>
255
256     <note type="warning">Notez que certains modules comme
257     <module>mod_proxy</module> ajoutent leur propre en-t&ecirc;te
258     <code>Content-Length</code> sous r&eacute;serve que la r&eacute;ponse o&ugrave; cette
259     en-t&ecirc;te est absente soit suffisamment courte pour que le module ait
260     pu la lire en une seule passe. De ce fait, des r&eacute;ponses courtes pourront
261     &ecirc;tre accept&eacute;es par la politique, alors que d'autres plus longues
262     seront rejet&eacute;es pour la m&ecirc;me URL.</note>
263
264     <p>Cette politique est impl&eacute;ment&eacute;e par le filtre
265     <strong>POLICY_LENGTH</strong>.</p>
266
267   </section>
268
269   <section id="policytype">
270     <title>Politique de filtrage de l'en-t&ecirc;te Content-Type</title>
271     <related>
272       <modulelist>
273         <module>mod_policy</module>
274       </modulelist>
275       <directivelist>
276         <directive module="mod_policy">PolicyType</directive>
277       </directivelist>
278     </related>
279
280     <p>Cette politique sera rejet&eacute;e si la r&eacute;ponse du serveur ne contient pas d'en-t&ecirc;te
281     <code>Content-Type</code> explicite et valide du point de vue de la
282     syntaxe, correspondant au mod&egrave;le d&eacute;fini par le serveur.</p>
283
284     <p>Le type de media du corps est plac&eacute; dans une en-t&ecirc;te
285     <code>Content-Type</code> dont le format est d&eacute;crit en d&eacute;tail dans
286     la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7">
287     RFC2616 section 3.7 Media Types</a>.</p>
288
289     <p>Une en-t&ecirc;te <code>Content-Type</code> dont la syntaxe est valide
290     sera du style :</p>
291
292     <example>
293       Content-Type: text/html; charset=iso-8859-1
294     </example>
295
296     <p>Exemples d'en-t&ecirc;tes <code>Content-Type</code> non valides :</p>
297
298     <example>
299       # invalide<br />
300       Content-Type: foo<br />
301       # vide<br />
302       Content-Type:
303     </example>
304
305     <p>L'administrateur peut restreindre la politique &agrave; un ou plusieurs
306     types sp&eacute;cifiques, ou utiliser des caract&egrave;res g&eacute;n&eacute;riques comme
307     <code>*/*</code>.</p>
308
309     <p>Cette politique est mise en oeuvre par le filtre
310     <strong>POLICY_TYPE</strong>.</p>
311
312   </section>
313
314   <section id="policykeepalive">
315     <title>Politique de gestion des connexions persistantes (Keepalive)</title>
316     <related>
317       <modulelist>
318         <module>mod_policy</module>
319       </modulelist>
320       <directivelist>
321         <directive module="mod_policy">PolicyKeepalive</directive>
322       </directivelist>
323     </related>
324
325     <p>Cette politique era rejet&eacute;e si la r&eacute;ponse du serveur ne contient pas d'en-t&ecirc;te
326     <code>Content-Length</code> explicite, ou d'en-t&ecirc;te
327     <code>Transfer-Encoding</code> d&eacute;fini &agrave; chunked.</p>
328
329     <p>De nombreuses mani&egrave;res pour d&eacute;terminer la taille d'un
330     corps de r&eacute;ponse sont d&eacute;crites dans la <a
331     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4">RFC2616
332     section 4.4 Message Length</a>.</p>
333
334     <p>Pour indiquer la fin de la r&eacute;ponse au client sans que ce dernier
335     ait &agrave; en conna&icirc;tre la taille au pr&eacute;alable, HTTP/1.1 propose
336     l'en-t&ecirc;te <code>Transfer-Encoding</code> comme une alternative &agrave;
337     <code>Content-Length</code>. Cependant, lors du traitement de
338     requ&ecirc;tes HTTP/1.0, et si l'en-t&ecirc;te <code>Content-Length</code> est
339     absent, le seul m&eacute;canisme dont dispose le serveur pour indiquer la
340     fin de la requ&ecirc;te consiste &agrave; couper la connexion. Dans un
341     environnement contenant des r&eacute;partiteurs de charge, cela peut
342     court-circuiter le m&eacute;canisme des connexions persistantes
343     (keepalive).
344     </p>
345
346     <p>En particulier, les r&egrave;gles suivantes sont appliqu&eacute;es : </p>
347
348     <dl>
349     <dt>Si</dt>
350     <dd>cette connexion n'est pas marqu&eacute;e en erreur ;</dd>
351
352     <dt>et</dt>
353     <dd>le client n'attend pas 100-continue ;</dd>
354
355     <dt>et</dt>
356     <dd>le code de statut de la r&eacute;ponse ne n&eacute;cessite pas de fermeture de connexion ;</dd>
357
358     <dt>et</dt>
359     <dd>le corps de la r&eacute;ponse a une taille d&eacute;finie suite au code de
360     statut 304 ou 204, la m&eacute;thode de requ&ecirc;te est HEAD, un en-t&ecirc;te
361     Content-Length ou Transfer-Encoding: chunked a d&eacute;j&agrave; &eacute;t&eacute; d&eacute;fini, ou
362     la requ&ecirc;te est de type HTTP/1.1 et peut donc &ecirc;tre d&eacute;finie &agrave; chunked.</dd>
363
364     <dt>alors</dt>
365     <dd>keepalive est support&eacute;.</dd>
366     </dl>
367
368     <note type="warning">Le serveur peut d&eacute;cider de d&eacute;sactiver les
369     connexions persistantes pour de nombreuses raisons, comme un arr&ecirc;t
370     imminent, un Connection: close en provenance du client, ou une
371     requ&ecirc;te client de type HTTP/1.0 dont la r&eacute;ponse ne comporte pas
372     d'en-t&ecirc;te <code>Content-Length</code>, mais pour ce qui nous
373     concerne, nous ne v&eacute;rifions que la possibilit&eacute; des connexions
374     persistantes depuis l'application, et non si les connexions
375     persistantes sont activ&eacute;es.</note>
376
377     <p>Notez aussi que le serveur HTTP Apache propose un filtre qui
378     ajoute un codage chunked aux r&eacute;ponses qui ne contiennent pas
379     d'en-t&ecirc;te <code>Content-Length</code> explicite. Cette politique
380     prend en compte les cas o&ugrave; le filtre est court-circuit&eacute; ou
381     d&eacute;sactiv&eacute;.</p>
382
383     <p>Cette politique est impl&eacute;ment&eacute;e par le filtre
384     <strong>POLICY_KEEPALIVE</strong>.</p>
385
386   </section>
387
388   <section id="policymaxage">
389     <title>Dur&eacute;e de fra&icirc;cheur / Politique de gestion de l'&acirc;ge maximum</title>
390     <related>
391       <modulelist>
392         <module>mod_policy</module>
393       </modulelist>
394       <directivelist>
395         <directive module="mod_policy">PolicyMaxage</directive>
396       </directivelist>
397     </related>
398
399     <p>Cette politique se verra rejet&eacute;e si la r&eacute;ponse du serveur ne
400     contient pas de <strong>dur&eacute;e de fra&icirc;cheur</strong> explicite au
401     moins grande que la limite d&eacute;finie par le serveur, ou si la
402     dur&eacute;e de fra&icirc;cheur est calcul&eacute;e &agrave; partir d'une heuristique.</p>
403
404     <p>Vous trouverez tous les d&eacute;tails &agrave; propos du calcul d'une dur&eacute;e de
405     fra&icirc;cheur dans la <a
406     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.2">RFC2616
407     section 13.2 Expiration Model</a>.</p>
408
409     <p>Pendant la dur&eacute;e de fra&icirc;cheur, un cache n'a pas besoin de
410     contacter le serveur original, et il peut renvoyer le contenu situ&eacute;
411     dans le cache tel quel au client.</p>
412
413     <p>Lorsque la date de p&eacute;remption est atteinte, le cache doit
414     contacter le serveur original dans le but de v&eacute;rifier si le contenu
415     situ&eacute; dans le cache est encore &agrave; jour, et si ce n'est pas le cas, de
416     le remplacer par le contenu correspondant sur le serveur original.</p>
417
418     <p>Lorsque la dur&eacute;e de fra&icirc;cheur est trop courte, il peut en
419     r&eacute;sulter un exc&egrave;s de charge pour le serveur. De plus, si une
420     interruption de service survient, et si cette derni&egrave;re est longue,
421     ou plus longue que la dur&eacute;e de fra&icirc;cheur, tout le contenu du cache
422     s'en trouvera p&eacute;rim&eacute;, ce qui causera un trafic tr&egrave;s important
423     lorsque le serveur ou le r&eacute;seau sera r&eacute;tabli.</p>
424
425     <p>Cette politique est impl&eacute;ment&eacute;e par le filtre
426     <strong>POLICY_MAXAGE</strong>.</p>
427
428   </section>
429
430   <section id="policynocache">
431     <title>Politique de gestion des contenus qui ne peuvent pas &ecirc;tre mis
432     en cache</title>
433     <related>
434       <modulelist>
435         <module>mod_policy</module>
436       </modulelist>
437       <directivelist>
438         <directive module="mod_policy">PolicyNocache</directive>
439       </directivelist>
440     </related>
441
442     <p>Cette politique sera rejet&eacute;e si la r&eacute;ponse du serveur
443     d&eacute;clare elle-m&ecirc;me qu'elle ne doit pas &ecirc;tre mise en cache &agrave; l'aide
444     d'un en-t&ecirc;te <code>Cache-Control</code> ou <code>Pragma</code>.</p>
445
446     <p>Vous trouverez tous les d&eacute;tails &agrave; propos de la mani&egrave;re dont un
447     contenu peut &ecirc;tre d&eacute;clar&eacute; comme non cachable dans la <a
448     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1">RFC2616
449     section 14.9.1 What is Cacheable</a>, et au sein de la d&eacute;finition de
450     l'en-t&ecirc;te <code>Pragma</code> dans la <a
451     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32">RFC2616
452     section 14.32 Pragma</a>.</p>
453
454     <p>Plus pr&eacute;cis&eacute;ment, si une combinaison des en-t&ecirc;tes suivants existe
455     dans la r&eacute;ponse, cette derni&egrave;re sera rejet&eacute;e :</p>
456
457     <ul>
458     <li><code>Cache-Control: no-cache</code></li>
459     <li><code>Cache-Control: no-store</code></li>
460     <li><code>Cache-Control: private</code></li>
461     <li><code>Pragma: no-cache</code></li>
462     </ul>
463
464     <p>D'une mani&egrave;re g&eacute;n&eacute;rale, lorsque cette politique est activ&eacute;e, et
465     si d'une mani&egrave;re inattendue un contenu non cachable peut induire un
466     niveau de charge du serveur inacceptable, tout contenu d&eacute;fini comme
467     non cachable par le serveur sera rejet&eacute;.</p>
468
469     <p>Cette politique est impl&eacute;ment&eacute;e par le filtre
470     <strong>POLICY_NOCACHE</strong>.</p>
471
472   </section>
473
474   <section id="policyvalidation">
475     <title>Politique de validation</title>
476     <related>
477       <modulelist>
478         <module>mod_policy</module>
479       </modulelist>
480       <directivelist>
481         <directive module="mod_policy">PolicyValidation</directive>
482       </directivelist>
483     </related>
484
485     <p>Cette politique sera rejet&eacute;e si la r&eacute;ponse du serveur
486     ne contient aucune en-t&ecirc;te syntaxiquement correct <code>ETag</code>
487     ou <code>Last-Modified</code>.</p>
488
489     <p>Vous trouverez une description compl&egrave;te de l'en-t&ecirc;te
490     <code>ETag</code> dans la <a
491     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19">RFC2616
492     section 14.19 Etag</a>, et de l'en-t&ecirc;te <code>Last-Modified</code>
493     dans la <a
494     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.29">RFC2616
495     section 14.29 Last-Modified</a>.</p>
496
497     <p>La v&eacute;rification est effectu&eacute;e non seulement en ce qui concerne la
498     pr&eacute;sence des en-t&ecirc;tes, mais aussi du point de vue de leur syntaxe.</p>
499
500     <p>Si une en-t&ecirc;te <code>ETag</code> n'est pas entour&eacute;e de guillemets,
501     ou n'est pas d&eacute;clar&eacute;e "weak" en le pr&eacute;fixant avec un "W/", la politique
502     sera rejet&eacute;e. De m&ecirc;me, si l'interpr&eacute;tation d'une en-t&ecirc;te
503     <code>Last-Modified</code> ne fournit pas de date valide, la r&eacute;ponse
504     sera rejet&eacute;e.</p>
505
506     <p>Cette politique est impl&eacute;ment&eacute;e par le filtre
507     <strong>POLICY_VALIDATION</strong>.</p>
508
509   </section>
510
511   <section id="policyvary">
512     <title>Politique de gestion de l'en-t&ecirc;te Vary</title>
513     <related>
514       <modulelist>
515         <module>mod_policy</module>
516       </modulelist>
517       <directivelist>
518         <directive module="mod_policy">PolicyVary</directive>
519       </directivelist>
520     </related>
521
522     <p>Cette politique se verra rejet&eacute;e si la r&eacute;ponse du serveur
523     contient une en-t&ecirc;te <code>Vary</code>, et si cette en-t&ecirc;te
524     contient &agrave; son tour une en-t&ecirc;te mise en liste noire par
525     l'administrateur.</p>
526
527     <p>L'en-t&ecirc;te <code>Vary</code> est d&eacute;crite en d&eacute;tails dans la <a
528     href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.44">RFC2616
529     section 14.44 Vary</a>.</p>
530
531     <p>Certaines en-t&ecirc;tes d&eacute;finies par les clients, comme
532     <code>User-Agent</code>, peuvent contenir des milliers ou m&ecirc;me des
533     millions de combinaisons de valeurs au cours du temps, et si la
534     r&eacute;ponse est consid&eacute;r&eacute;e comme pouvant &ecirc;tre mise en cache, le cache
535     peut tenter d'enregistrer toutes ces r&eacute;ponses, ce qui peut l'amener
536     &agrave; saturation et &agrave; noyer les autres entr&eacute;es qu'il contient. Avec ce
537     sc&eacute;nario, cette politique sera rejet&eacute;e.</p>
538
539     <p>Cette politique est impl&eacute;ment&eacute;e par le filtre
540     <strong>POLICY_VARY</strong>.</p>
541
542   </section>
543
544   <section id="policyversion">
545     <title>Politique de gestion des versions de protocole</title>
546     <related>
547       <modulelist>
548         <module>mod_policy</module>
549       </modulelist>
550       <directivelist>
551         <directive module="mod_policy">PolicyVersion</directive>
552       </directivelist>
553     </related>
554
555     <p>Cette politique sera rejet&eacute;e si la r&eacute;ponse du serveur
556     a &eacute;t&eacute; g&eacute;n&eacute;r&eacute;e avec un num&eacute;ro de version inf&eacute;rieur &agrave; la version
557     de HTTP sp&eacute;cifi&eacute;e.</p>
558
559     <p>Cette politique s'utilise en g&eacute;n&eacute;ral avec les applications qui
560     n&eacute;cessitent un contr&ocirc;le du type du client. Elle peut &ecirc;tre utilis&eacute;e en
561     concomitance avec le filtre <code>POLICY_KEEPALIVE</code> afin de
562     s'assurer que les clients HTTP/1.0 n'engendrent pas la fermeture des
563     connexions persistantes.</p>
564
565     <p>Les versions minimales pouvant &ecirc;tre sp&eacute;cifi&eacute;es sont :</p>
566
567     <ul><li><code>HTTP/1.1</code></li>
568     <li><code>HTTP/1.0</code></li>
569     <li><code>HTTP/0.9</code></li>
570     </ul>
571
572     <p>Cette politique est impl&eacute;ment&eacute;e par le filtre
573     <strong>POLICY_VERSON</strong>.</p>
574
575   </section>
576 </manualpage>