]> granicus.if.org Git - apache/blob - docs/manual/env.xml.fr
Update transformations
[apache] / docs / manual / env.xml.fr
1 <?xml version="1.0" encoding="ISO-8859-1" ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
4 <!-- English Revision: 1061423:1174747 (outdated) -->
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="env.xml.meta">
26
27   <title>Apache et les variables d'environnement</title>
28
29   <summary>
30      <p>Deux types de variables d'environnement affectent le serveur
31      HTTP Apache.</p>
32
33     <p>Le premier type correspond aux variables d'environnement
34     contr&ocirc;l&eacute;es par le syst&egrave;me d'exploitation sous-jacent et d&eacute;finies
35     avant le d&eacute;marrage du serveur. Leurs valeurs peuvent &ecirc;tre utilis&eacute;es
36     directement dans les fichiers de configuration, et peuvent
37     &eacute;ventuellement &ecirc;tre transmises aux scripts CGI et SSI via la
38     directive PassEnv.</p>
39
40     <p>Le second type correspond aux variables nomm&eacute;es appel&eacute;es aussi
41     <em>variables d'environnement</em> dans lesquelles le serveur HTTP
42     Apache stocke des informations via un m&eacute;canisme sp&eacute;cial. Ces
43     informations peuvent servir &agrave; contr&ocirc;ler diverses op&eacute;rations comme
44     l'enregistrement des traces ou le contr&ocirc;le d'acc&egrave;s. On utilise aussi ces
45     variables dans le m&eacute;canisme de communication avec les programmes externes
46     comme les scripts CGI. Ce document pr&eacute;sente diff&eacute;rentes m&eacute;thodes pour
47     manipuler et utiliser ces variables.</p>
48
49     <p>Bien que ces variables soient r&eacute;f&eacute;renc&eacute;es comme <em>variables
50     d'environnement</em>, il ne faut pas les confondre avec les variables
51     d'environnement contr&ocirc;l&eacute;es par le syst&egrave;me d'exploitation sous-jacent.
52     En fait, ces variables sont stock&eacute;es et manipul&eacute;es dans une structure
53     interne &agrave; Apache. Elles ne deviennent de v&eacute;ritables variables
54     d'environnement du syst&egrave;me d'exploitation que lorsqu'elles sont mises &agrave; la
55     disposition de scripts CGI et de scripts inclus c&ocirc;t&eacute; serveur (SSI). Si vous
56     souhaitez manipuler l'environnement du syst&egrave;me d'exploitation sous lequel
57     le serveur s'ex&eacute;cute, vous devez utiliser les m&eacute;canismes standards de
58     manipulation de l'environnement fournis par l'interpr&eacute;teur de commandes
59     (shell) de votre syst&egrave;me d'exploitation.</p>
60   </summary>
61
62   <section id="setting">
63     <title>D&eacute;finition des variables d'environnement</title>
64     <related>
65       <modulelist>
66         <module>mod_cache</module>
67         <module>mod_env</module>
68         <module>mod_rewrite</module>
69         <module>mod_setenvif</module>
70         <module>mod_unique_id</module>
71       </modulelist>
72       <directivelist>
73         <directive module="mod_setenvif">BrowserMatch</directive>
74         <directive module="mod_setenvif">BrowserMatchNoCase</directive>
75         <directive module="mod_env">PassEnv</directive>
76         <directive module="mod_rewrite">RewriteRule</directive>
77         <directive module="mod_env">SetEnv</directive>
78         <directive module="mod_setenvif">SetEnvIf</directive>
79         <directive module="mod_setenvif">SetEnvIfNoCase</directive>
80         <directive module="mod_env">UnsetEnv</directive>
81       </directivelist>
82     </related>
83
84     <section id="basic-manipulation">
85         <title>Manipulations de base de l'environnement</title>
86
87         <p>La m&eacute;thode la plus &eacute;l&eacute;mentaire pour d&eacute;finir une variable
88         d'environnement au niveau d'Apache consiste &agrave; utiliser la directive
89         inconditionnelle <directive module="mod_env"
90         >SetEnv</directive>. Les variables peuvent aussi &ecirc;tre transmises depuis
91         l'environnement du shell &agrave; partir duquel le serveur a &eacute;t&eacute; d&eacute;marr&eacute; en
92         utilisant la directive
93         <directive module="mod_env">PassEnv</directive>.</p>
94
95     </section>
96     <section id="conditional">
97         <title>D&eacute;finitions conditionnelles en fonction des requ&ecirc;tes</title>
98
99         <p>Pour plus de souplesse, les directives fournies par le module
100         <module>mod_setenvif</module> permettent de d&eacute;finir les
101         variables d'environnement en tenant compte des caract&eacute;ristiques
102         de chaque requ&ecirc;te. Par exemple, une
103         variable pourrait n'&ecirc;tre d&eacute;finie que lorsqu'un navigateur sp&eacute;cifique
104         (User-Agent) a g&eacute;n&eacute;r&eacute; la requ&ecirc;te, ou seulement quand un en-t&ecirc;te
105         Referer particulier est pr&eacute;sent. La directive
106         <directive module="mod_rewrite">RewriteRule</directive> du module
107         <module>mod_rewrite</module> qui utilise l'option
108         <code>[E=...]</code> pour d&eacute;finir
109         les variables d'environnement apporte encore plus de souplesse.</p>
110
111     </section>
112     <section id="unique-identifiers">
113         <title>Identifiants uniques</title>
114
115         <p>Finalement, le module <module>mod_unique_id</module> d&eacute;finit la variable
116         d'environnement <code>UNIQUE_ID</code> pour chaque requ&ecirc;te &agrave; une valeur
117         qui est garantie unique parmi "toutes" les requ&ecirc;tes sous des
118         conditions tr&egrave;s sp&eacute;cifiques.</p>
119
120     </section>
121     <section id="standard-cgi">
122         <title>Variables CGI standards</title>
123
124         <p>En plus de l'ensemble des variables d'environnement internes &agrave; la
125         configuration d'Apache et de celles transmises depuis le shell,
126         les scripts CGI et les pages SSI
127         se voient affect&eacute;s un ensemble de variables
128         d'environnement contenant des m&eacute;ta-informations &agrave; propos de la requ&ecirc;te
129         comme pr&eacute;conis&eacute; dans la
130         <a href="http://www.ietf.org/rfc/rfc3875">sp&eacute;cification
131         sur les CGIs</a>.</p>
132
133     </section>
134     <section id="caveats">
135         <title>Quelques mises en garde</title>
136
137         <ul>
138           <li>Les directives de manipulation de l'environnement ne permettent
139           pas de supplanter ou modifier les variables CGI standards.</li>
140
141           <li>Lorsqu'on utilise <program>suexec</program> pour ex&eacute;cuter des
142           scripts CGI, l'environnement est nettoy&eacute; et r&eacute;duit &agrave; un ensemble de
143           variables <em>s&ucirc;res</em> avant l'ex&eacute;cution du script. La liste des
144           variables <em>s&ucirc;res</em> est d&eacute;finie &agrave; la compilation dans
145           <code>suexec.c</code>.</li>
146
147           <li>Pour des raisons de portabilit&eacute;, les noms des variables
148           d'environnement ne peuvent contenir que des lettres, des chiffres, et
149           le caract&egrave;re "souslign&eacute;". En outre, le premier caract&egrave;re ne doit pas
150           &ecirc;tre un chiffre. Les caract&egrave;res qui ne satisfont pas &agrave; ces conditions
151           seront remplac&eacute;s par un caract&egrave;re "souslign&eacute;" quand ils seront
152           transmis aux scripts CGI et aux pages SSI.</li>
153
154           <li>Les contenus d'en-t&ecirc;tes HTTP transmis aux scripts de type
155           CGI ou autre via des variables d'environnement constituent un
156           cas particulier (voir plus loin). Leur nom est converti en
157           majuscules et seuls les tirets sont remplac&eacute;s par des
158           caract&egrave;res '_' ("soulign&eacute;") ; si le format du nom de l'en-t&ecirc;te
159           n'est pas valide, celui-ci est ignor&eacute;. Voir <a
160           href="#fixheader">plus loin</a> pour une solution de
161           contournement du probl&egrave;me.</li>
162
163           <li>La directive <directive
164           module="mod_env">SetEnv</directive> s'ex&eacute;cute assez tard au
165           cours du traitement de la requ&ecirc;te, ce qui signifie que des
166           directives telles que <directive
167           module="mod_setenvif">SetEnvIf</directive> et <directive
168           module="mod_rewrite">RewriteCond</directive> ne verront pas
169           les variables qu'elle aura d&eacute;finies.</li>
170         </ul>
171     </section>
172   </section>
173   <section id="using">
174     <title>Utilisation des variables d'environnement</title>
175
176     <related>
177       <modulelist>
178         <module>mod_authz_host</module>
179         <module>mod_cgi</module>
180         <module>mod_ext_filter</module>
181         <module>mod_headers</module>
182         <module>mod_include</module>
183         <module>mod_log_config</module>
184         <module>mod_rewrite</module>
185       </modulelist>
186       <directivelist>
187         <directive module="mod_authz_host">Allow</directive>
188         <directive module="mod_log_config">CustomLog</directive>
189         <directive module="mod_authz_host">Deny</directive>
190         <directive module="mod_ext_filter">ExtFilterDefine</directive>
191         <directive module="mod_headers">Header</directive>
192         <directive module="mod_log_config">LogFormat</directive>
193         <directive module="mod_rewrite">RewriteCond</directive>
194         <directive module="mod_rewrite">RewriteRule</directive>
195       </directivelist>
196     </related>
197
198     <section id="cgi-scripts">
199         <title>Scripts CGI</title>
200
201         <p>La communication d'informations aux scripts CGI constitue une des
202         principales utilisations des variables d'environnement. Comme indiqu&eacute;
203         plus haut, l'environnement transmis aux scripts CGI comprend des
204         m&eacute;ta-informations standards &agrave; propos de la requ&ecirc;te, en plus des
205         variables d&eacute;finies dans la configuration d'Apache. Pour plus de
206         d&eacute;tails, se r&eacute;f&eacute;rer au
207         <a href="howto/cgi.html">tutoriel CGI</a>.</p>
208
209     </section>
210     <section id="ssi-pages">
211         <title>Pages SSI</title>
212
213         <p>Les documents inclus c&ocirc;t&eacute; serveur (SSI) trait&eacute;s par le filtre
214         <code>INCLUDES</code> du module <module>mod_include</module>,
215         peuvent afficher les
216         variables d'environnement &agrave; l'aide de l'&eacute;l&eacute;ment <code>echo</code>,
217         et peuvent utiliser des variables d'environnement dans les &eacute;l&eacute;ments
218         de contr&ocirc;le de flux pour rendre certaines parties d'une page
219         conditionnelles en fonction des caract&eacute;ristiques de la requ&ecirc;te.
220         Apache fournit aussi les variables d'environnement CGI standards
221         aux pages SSI
222         comme indiqu&eacute; plus haut. Pour plus de d&eacute;tails, se r&eacute;f&eacute;rer au
223         <a href="howto/ssi.html">tutoriel SSI</a>.</p>
224
225     </section>
226     <section id="access-control">
227         <title>Contr&ocirc;le d'acc&egrave;s</title>
228
229         <p>L'acc&egrave;s au serveur peut &ecirc;tre contr&ocirc;l&eacute; en fonction de la valeur de
230         variables d'environnement &agrave; l'aide des directives
231         <code>allow from env=</code> et <code>deny from env=</code>.
232         En association avec la directive
233         <directive module="mod_setenvif">SetEnvIf</directive>, ceci conf&egrave;re une
234         grande souplesse au contr&ocirc;le d'acc&egrave;s au serveur en fonction des
235         caract&eacute;ristiques du client. Par exemple, vous pouvez utiliser ces
236         directives pour interdire l'acc&egrave;s depuis un navigateur particulier
237         (User-Agent).
238         </p>
239
240     </section>
241     <section id="logging">
242         <title>Enregistrement conditionnel des traces</title>
243
244         <p>Les variables d'environnement peuvent &ecirc;tre enregistr&eacute;es dans le
245         fichier de log des acc&egrave;s &agrave; l'aide de l'option <code>%e</code> de la
246         directive <directive module="mod_log_config">LogFormat</directive>.
247         En outre, la d&eacute;cision de tracer ou non les requ&ecirc;tes peut &ecirc;tre prise
248         en fonction de l'&eacute;tat de variables d'environnement en utilisant la
249         forme conditionnelle de la directive
250         <directive module="mod_log_config">CustomLog</directive>. En
251         association avec la directive <directive module="mod_setenvif"
252         >SetEnvIf</directive>, ceci conf&egrave;re une grande souplesse au contr&ocirc;le
253         du tra&ccedil;age des requ&ecirc;tes. Par exemple, vous pouvez choisir de ne pas
254         tracer les requ&ecirc;tes pour des noms de fichiers se terminant par
255         <code>gif</code>, ou encore de ne tracer que les requ&ecirc;tes des clients
256         n'appartenant pas &agrave; votre sous-r&eacute;seau.</p>
257
258     </section>
259     <section id="response-headers">
260         <title>En-t&ecirc;tes de r&eacute;ponse conditionnels</title>
261
262         <p>La directive <directive module="mod_headers">Header</directive>
263         peut se baser sur la pr&eacute;sence ou l'absence d'une variable
264         d'environnement pour d&eacute;cider si un certain en-t&ecirc;te HTTP sera plac&eacute;
265         dans la r&eacute;ponse au client. Ceci permet, par exemple, de n'envoyer un
266         certain en-t&ecirc;te de r&eacute;ponse que si un en-t&ecirc;te correspondant est pr&eacute;sent
267         dans la requ&ecirc;te du client.</p>
268
269     </section>
270
271     <section id="external-filter">
272         <title>Activation de filtres externes</title>
273
274         <p>Les filtres externes configur&eacute;s par le module
275         <module>mod_ext_filter</module> &agrave; l'aide de la directive <directive
276         module="mod_ext_filter">ExtFilterDefine</directive> peuvent &ecirc;tre
277         activ&eacute;s de mani&egrave;re conditionnelle en fonction d'une variable
278         d'environnement &agrave; l'aide des options
279         <code>disableenv=</code> et <code>enableenv=</code>.</p>
280     </section>
281
282     <section id="url-rewriting">
283         <title>R&eacute;&eacute;criture d'URL</title>
284
285         <p>La forme <code>%{ENV:<em>variable</em>}</code> de
286         <em>TestString</em> dans la
287         directive <directive module="mod_rewrite">RewriteCond</directive>
288         permet au moteur de r&eacute;&eacute;criture du module
289         <module>mod_rewrite</module> de prendre des
290         d&eacute;cisions conditionn&eacute;es par des variables d'environnement.
291         Notez que les variables accessibles dans
292         <module>mod_rewrite</module> sans le pr&eacute;fixe
293         <code>ENV:</code> ne sont pas de v&eacute;ritables variables
294         d'environnement. Ce sont plut&ocirc;t des variables sp&eacute;cifiques &agrave;
295         <module>mod_rewrite</module>
296         qui ne sont pas accessibles pour les autres modules.</p>
297     </section>
298   </section>
299
300   <section id="special">
301     <title>Variables d'environnement &agrave; usage sp&eacute;cial</title>
302
303         <p>Des probl&egrave;mes d'interop&eacute;rabilit&eacute; ont conduit &agrave; l'introduction de
304         m&eacute;canismes permettant de modifier le comportement d'Apache lorsqu'il
305         dialogue avec certains clients. Afin de rendre ces m&eacute;canismes aussi
306         souples que possible, ils sont invoqu&eacute;s en d&eacute;finissant des variables
307         d'environnement, en g&eacute;n&eacute;ral &agrave; l'aide de la directive
308         <directive module="mod_setenvif">BrowserMatch</directive>, bien que les
309         directives <directive module="mod_env">SetEnv</directive> et
310         <directive module="mod_env">PassEnv</directive> puissent aussi &ecirc;tre
311         utilis&eacute;es, par exemple.</p>
312
313     <section id="downgrade">
314         <title>downgrade-1.0</title>
315
316         <p>Ceci force le traitement d'une requ&ecirc;te comme une requ&ecirc;te HTTP/1.0
317         m&ecirc;me si elle a &eacute;t&eacute; r&eacute;dig&eacute;e dans un langage plus r&eacute;cent.</p>
318
319     </section>
320     <section id="force-gzip">
321         <title>force-gzip</title>
322           <p>Si le filtre <code>DEFLATE</code> est activ&eacute;, cette variable
323           d'environnement ignorera les r&eacute;glages accept-encoding de votre
324           navigateur et enverra une sortie compress&eacute;e inconditionnellement.</p>
325     </section>
326     <section id="force-no-vary">
327         <title>force-no-vary</title>
328
329         <p>Cette variable entra&icirc;ne la suppression de tout champ
330         <code>Vary</code> des en-t&ecirc;tes de la r&eacute;ponse avant que cette derni&egrave;re
331         soit renvoy&eacute;e au client. Certains clients n'interpr&egrave;tent pas ce champ
332         correctement, et la d&eacute;finition de cette variable permet de contourner
333         ce probl&egrave;me, mais implique aussi la d&eacute;finition de
334         <strong>force-response-1.0</strong>.</p>
335
336     </section>
337     <section id="force-response">
338         <title>force-response-1.0</title>
339
340       <p>Cette variable force une r&eacute;ponse en langage HTTP/1.0 aux clients
341       qui envoient des requ&ecirc;tes dans le m&ecirc;me langage. Elle fut impl&eacute;ment&eacute;e &agrave;
342       l'origine suite &agrave; des probl&egrave;mes avec les mandataires d'AOL. Certains
343       clients en langage HTTP/1.0 ne r&eacute;agissent pas correctement face &agrave; une
344       r&eacute;ponse en langage HTTP/1.1, et cette variable peut &ecirc;tre utilis&eacute;e pour
345       assurer l'interop&eacute;rabilit&eacute; avec eux.</p>
346
347     </section>
348
349     <section id="gzip-only-text-html">
350         <title>gzip-only-text/html</title>
351
352         <p>Positionn&eacute;e &agrave; "1", cette variable d&eacute;sactive le filtre en sortie
353         <code>DEFLATE</code> fourni par le module <module>mod_deflate</module> pour les
354         types de contenu autres que <code>text/html</code>. Si vous pr&eacute;f&eacute;rez
355         utiliser des fichiers compress&eacute;s statiquement,
356         <module>mod_negotiation</module> &eacute;value aussi la variable (non
357         seulement pour gzip, mais aussi pour tous les encodages autres que
358         "identity").</p>
359     </section>
360
361     <section id="no-gzip"><title>no-gzip</title>
362
363         <p>Quand cette variable est d&eacute;finie, le filtre <code>DEFLATE</code> du
364         module <module>mod_deflate</module> est d&eacute;sactiv&eacute;, et
365         <module>mod_negotiation</module> refusera de d&eacute;livrer des ressources
366         encod&eacute;es.</p>
367
368     </section>
369
370     <section id="no-cache"><title>no-cache</title>
371         <p><em>Disponible dans les versions 2.2.12 et ult&eacute;rieures d'Apache</em></p>
372
373         <p>Lorsque cette variable est d&eacute;finie,
374         <module>mod_cache</module> ne sauvegardera pas de r&eacute;ponse
375         susceptible d'&ecirc;tre mise en cache. Cette variable d'environnement
376         n'a aucune incidence sur le fait qu'une r&eacute;ponse d&eacute;j&agrave; enregistr&eacute;e
377         dans la cache soit utilis&eacute;e ou non pour la requ&ecirc;te courante.</p>
378
379     </section>
380
381     <section id="nokeepalive">
382         <title>nokeepalive</title>
383
384         <p>Quand cette variable est d&eacute;finie, la directive
385         <directive module="core">KeepAlive</directive> est d&eacute;sactiv&eacute;e.</p>
386
387     </section>
388
389     <section id="prefer-language"><title>prefer-language</title>
390
391         <p>Cette variable modifie le comportement du module
392         <module>mod_negotiation</module>. Si elle contient un symbole de
393         langage (tel que <code>en</code>, <code>ja</code>
394         ou <code>x-klingon</code>), <module>mod_negotiation</module> essaie de
395         d&eacute;livrer une variante dans ce langage. S'il n'existe pas de telle
396         variante, le processus normal de
397         <a href="content-negotiation.html">n&eacute;gociation</a> s'applique.</p>
398
399     </section>
400
401     <section id="redirect-carefully">
402         <title>redirect-carefully</title>
403
404         <p>Cette variable force le serveur &agrave; &ecirc;tre plus prudent lors de l'envoi
405         d'une redirection au client. Elle est en g&eacute;n&eacute;ral utilis&eacute;e quand un
406         client pr&eacute;sente un probl&egrave;me connu avec les redirections. Elle fut
407         impl&eacute;ment&eacute;e &agrave; l'origine suite a un probl&egrave;me rencontr&eacute; avec le logiciel
408         WebFolders de Microsoft qui ne g&egrave;re pas correctement les redirections
409         vers des ressources de type r&eacute;pertoire via des m&eacute;thodes DAV.</p>
410
411     </section>
412
413    <section id="suppress-error-charset">
414        <title>suppress-error-charset</title>
415
416     <p><em>Disponible dans les versions post&eacute;rieures &agrave; 2.0.54</em></p>
417
418     <p>Quand Apache g&eacute;n&egrave;re une redirection en r&eacute;ponse &agrave; une requ&ecirc;te client,
419     la r&eacute;ponse inclut un texte destin&eacute; &agrave; &ecirc;tre affich&eacute; au cas o&ugrave; le client ne
420     suivrait pas, ou ne pourrait pas suivre automatiquement la redirection.
421     Habituellement, Apache marque ce texte en accord avec le jeu de caract&egrave;res
422     qu'il utilise, &agrave; savoir ISO-8859-1.</p>
423     <p> Cependant, si la redirection fait r&eacute;f&eacute;rence &agrave; une page qui utilise un
424     jeu de caract&egrave;res diff&eacute;rent, certaines versions de navigateurs obsol&egrave;tes
425     essaieront d'utiliser le jeu de caract&egrave;res du texte de la redirection
426     plut&ocirc;t que celui de la page r&eacute;elle.
427     Ceci peut entra&icirc;ner, par exemple, un rendu incorrect du Grec.</p>
428     <p>Si cette variable d'environnement est d&eacute;finie, Apache omettra le jeu de
429     caract&egrave;res pour le texte de la redirection, et les navigateurs obsol&egrave;tes
430     pr&eacute;cit&eacute;s utiliseront correctement celui de la page de destination.</p>
431
432     <note type="warning">
433       <title>Note concernant la s&eacute;curit&eacute;</title>
434
435       <p>L'envoi de pages d'erreur sans sp&eacute;cifier un jeu de caract&egrave;res peut
436       conduire &agrave; des attaques de type "cross-site-scripting" pour les
437       navigateurs qui ne respectent pas la sp&eacute;cification HTTP/1.1 (MSIE) et
438       tentent de d&eacute;duire le jeu de caract&egrave;res &agrave; partir du contenu. De tels
439       navigateurs peuvent &ecirc;tre facilement tromp&eacute;s et utiliser le jeu de
440       caract&egrave;res UTF-7 ; les contenus des donn&eacute;es en entr&eacute;e de type UTF-7
441       (comme les URI de requ&ecirc;te) ne seront alors plus prot&eacute;g&eacute;s par les
442       m&eacute;canismes d'&eacute;chappement usuels con&ccedil;us pour pr&eacute;venir les attaques
443       de type "cross-site-scripting".</p>
444     </note>
445
446    </section>
447
448    <section id="proxy"><title>force-proxy-request-1.0, proxy-nokeepalive, proxy-sendchunked,
449    proxy-sendcl, proxy-chain-auth, proxy-interim-response, proxy-initial-not-pooled</title>
450
451    <p>Ces directives modifient le comportement protocolaire du module
452    <module>mod_proxy</module>.  Voir la documentation sur
453    <module>mod_proxy</module> et <module>mod_proxy_http</module> pour plus de d&eacute;tails.</p>
454    </section>
455
456   </section>
457
458   <section id="examples">
459     <title>Exemples</title>
460
461     <section id="fixheader">
462       <title>Transmission du contenu d'en-t&ecirc;tes non valides aux scripts
463       CGI</title>
464
465       <p>Avec la version 2.4, Apache est plus strict avec la conversion
466       des en-t&ecirc;tes HTTP en variables d'environnement dans
467       <module>mod_cgi</module> et d'autres modules : dans les versions
468       pr&eacute;c&eacute;dentes, tout caract&egrave;re invalide dans les noms d'en-t&ecirc;tes
469       &eacute;tait tout simplement remplac&eacute; par un caract&egrave;re '_', ce qui
470       pouvait exposer &agrave; des attaques de type cross-site-scripting via
471       injection d'en-t&ecirc;tes (voir <a
472       href="http://events.ccc.de/congress/2007/Fahrplan/events/2212.en.html">Bogues
473       du Web inhabituelles</a>, planche 19/20).</p>
474
475       <p>Si vous devez supporter un client qui envoie des en-t&ecirc;tes non
476       conformes et si ceux-ci ne peuvent pas &ecirc;tre corrig&eacute;s, il existe
477       une solution de contournement simple mettant en jeu les modules
478       <module>mod_setenvif</module> et <module>mod_header</module>,
479       et permettant de prendre en compte ces en-t&ecirc;tes :</p>
480
481 <example>
482 # <br />
483 # L'exemple suivant montre comment prendre en compte un en-t&ecirc;te<br />
484 # Accept_Encoding non conforme envoy&eacute; par un client.<br />
485 #<br />
486 SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1<br />
487 RequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding
488 </example>
489
490     </section>
491
492     <section id="misbehaving">
493         <title>Modification du comportement protocolaire face &agrave; des clients
494         r&eacute;agissant de mani&egrave;re non conforme</title>
495
496         <p>Les versions ant&eacute;rieures recommandaient l'ajout de ces lignes dans
497         httpd.conf pour tenir compte de probl&egrave;mes connus avec certains clients.
498         Comme les clients concern&eacute;s sont maintenant tr&egrave;s peu utilis&eacute;s, cet
499         ajout n'est pratiquement plus n&eacute;cessaire.</p>
500 <example>
501 #<br />
502 # The following directives modify normal HTTP response behavior.<br />
503 # The first directive disables keepalive for Netscape 2.x and browsers that<br />
504 # spoof it. There are known problems with these browser implementations.<br />
505 # The second directive is for Microsoft Internet Explorer 4.0b2<br />
506 # which has a broken HTTP/1.1 implementation and does not properly<br />
507 # support keepalive when it is used on 301 or 302 (redirect) responses.<br />
508 #<br />
509 BrowserMatch "Mozilla/2" nokeepalive<br />
510 BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0<br />
511 <br />
512 #<br />
513 # The following directive disables HTTP/1.1 responses to browsers which<br />
514 # are in violation of the HTTP/1.0 spec by not being able to grok a<br />
515 # basic 1.1 response.<br />
516 #<br />
517 BrowserMatch "RealPlayer 4\.0" force-response-1.0<br />
518 BrowserMatch "Java/1\.0" force-response-1.0<br />
519 BrowserMatch "JDK/1\.0" force-response-1.0
520 </example>
521
522     </section>
523     <section id="no-img-log">
524         <title>Ne pas tracer les requ&ecirc;tes pour des images dans le fichier de
525         trace des acc&egrave;s</title>
526
527         <p>Dans cet exemple, les requ&ecirc;tes pour des images n'apparaissent pas
528         dans le fichier de trace des acc&egrave;s. Il peut &ecirc;tre facilement adapt&eacute; pour
529         emp&ecirc;cher le tra&ccedil;age de r&eacute;pertoires particuliers, ou de requ&ecirc;tes
530         en provenance de certains h&ocirc;tes.</p>
531          <example>
532            SetEnvIf Request_URI \.gif image-request<br />
533            SetEnvIf Request_URI \.jpg image-request<br />
534            SetEnvIf Request_URI \.png image-request<br />
535            CustomLog logs/access_log common env=!image-request
536          </example>
537
538     </section>
539     <section id="image-theft">
540         <title>Pr&eacute;vention du "Vol d'image"</title>
541
542         <p>Cet exemple montre comment emp&ecirc;cher les utilisateurs ne faisant pas
543         partie de votre serveur d'utiliser des images de votre serveur comme
544         images en ligne dans leurs pages. Cette configuration n'est pas
545         recommand&eacute;e, mais elle peut fonctionner dans des circonstances bien
546         d&eacute;finies. Nous supposons que toutes vos images sont enregistr&eacute;es dans
547         un r&eacute;pertoire nomm&eacute; <code>/web/images</code>.</p>
548     <example>
549           SetEnvIf Referer "^http://www\.example\.com/" local_referal<br />
550           # Allow browsers that do not send Referer info<br />
551           SetEnvIf Referer "^$" local_referal<br />
552           &lt;Directory /web/images&gt;<br />
553           <indent>
554             Order Deny,Allow<br />
555             Deny from all<br />
556             Allow from env=local_referal
557           </indent>
558           &lt;/Directory&gt;
559         </example>
560
561         <p>Pour plus d'informations sur cette technique, voir le tutoriel sur
562         ServerWatch
563         "<a href="http://www.serverwatch.com/tutorials/article.php/1132731"
564         >Keeping Your Images from Adorning Other Sites</a>".</p>
565     </section>
566   </section>
567 </manualpage>