mirror of
				https://github.com/apache/httpd.git
				synced 2025-11-03 17:53:20 +03:00 
			
		
		
		
	---Cette ligne, et les suivantes ci-dessous, seront ignorées-- M manual/env.xml.fr git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1726415 13f79535-47bb-0310-9956-ffa450edef68
		
			
				
	
	
		
			575 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			575 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
<?xml version="1.0" encoding="UTF-8" ?>
 | 
						|
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
 | 
						|
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
 | 
						|
<!-- English Revision: 1725855 -->
 | 
						|
<!-- French translation : Lucien GENTIS -->
 | 
						|
<!-- Reviewed by : Vincent Deffontaines -->
 | 
						|
 | 
						|
<!--
 | 
						|
 Licensed to the Apache Software Foundation (ASF) under one or more
 | 
						|
 contributor license agreements.  See the NOTICE file distributed with
 | 
						|
 this work for additional information regarding copyright ownership.
 | 
						|
 The ASF licenses this file to You under the Apache License, Version 2.0
 | 
						|
 (the "License"); you may not use this file except in compliance with
 | 
						|
 the License.  You may obtain a copy of the License at
 | 
						|
 | 
						|
     http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 | 
						|
 Unless required by applicable law or agreed to in writing, software
 | 
						|
 distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 See the License for the specific language governing permissions and
 | 
						|
 limitations under the License.
 | 
						|
-->
 | 
						|
 | 
						|
<manualpage metafile="env.xml.meta">
 | 
						|
 | 
						|
  <title>Apache et les variables d'environnement</title>
 | 
						|
 | 
						|
  <summary>
 | 
						|
     <p>Deux types de variables d'environnement affectent le serveur
 | 
						|
     HTTP Apache.</p>
 | 
						|
 | 
						|
    <p>Le premier type correspond aux variables d'environnement
 | 
						|
    contrôlées par le système d'exploitation sous-jacent et définies
 | 
						|
    avant le démarrage du serveur. Leurs valeurs peuvent être utilisées
 | 
						|
    directement dans les fichiers de configuration, et peuvent
 | 
						|
    éventuellement être transmises aux scripts CGI et SSI via la
 | 
						|
    directive PassEnv.</p>
 | 
						|
 | 
						|
    <p>Le second type correspond aux variables nommées appelées aussi
 | 
						|
    <em>variables d'environnement</em> dans lesquelles le serveur HTTP
 | 
						|
    Apache stocke des informations via un mécanisme spécial. Ces
 | 
						|
    informations peuvent servir à contrôler diverses opérations comme
 | 
						|
    l'enregistrement des traces ou le contrôle d'accès. On utilise aussi ces
 | 
						|
    variables dans le mécanisme de communication avec les programmes externes
 | 
						|
    comme les scripts CGI. Ce document présente différentes méthodes pour
 | 
						|
    manipuler et utiliser ces variables.</p>
 | 
						|
 | 
						|
    <p>Bien que ces variables soient référencées comme <em>variables
 | 
						|
    d'environnement</em>, il ne faut pas les confondre avec les variables
 | 
						|
    d'environnement contrôlées par le système d'exploitation sous-jacent.
 | 
						|
    En fait, ces variables sont stockées et manipulées dans une structure
 | 
						|
    interne à Apache. Elles ne deviennent de véritables variables
 | 
						|
    d'environnement du système d'exploitation que lorsqu'elles sont mises à la
 | 
						|
    disposition de scripts CGI et de scripts inclus côté serveur (SSI). Si vous
 | 
						|
    souhaitez manipuler l'environnement du système d'exploitation sous lequel
 | 
						|
    le serveur s'exécute, vous devez utiliser les mécanismes standards de
 | 
						|
    manipulation de l'environnement fournis par l'interpréteur de commandes
 | 
						|
    (shell) de votre système d'exploitation.</p>
 | 
						|
  </summary>
 | 
						|
 | 
						|
  <section id="setting">
 | 
						|
    <title>Définition des variables d'environnement</title>
 | 
						|
    <related>
 | 
						|
      <modulelist>
 | 
						|
        <module>mod_cache</module>
 | 
						|
        <module>mod_env</module>
 | 
						|
        <module>mod_rewrite</module>
 | 
						|
        <module>mod_setenvif</module>
 | 
						|
        <module>mod_unique_id</module>
 | 
						|
      </modulelist>
 | 
						|
      <directivelist>
 | 
						|
        <directive module="mod_setenvif">BrowserMatch</directive>
 | 
						|
        <directive module="mod_setenvif">BrowserMatchNoCase</directive>
 | 
						|
        <directive module="mod_env">PassEnv</directive>
 | 
						|
        <directive module="mod_rewrite">RewriteRule</directive>
 | 
						|
        <directive module="mod_env">SetEnv</directive>
 | 
						|
        <directive module="mod_setenvif">SetEnvIf</directive>
 | 
						|
        <directive module="mod_setenvif">SetEnvIfNoCase</directive>
 | 
						|
        <directive module="mod_env">UnsetEnv</directive>
 | 
						|
      </directivelist>
 | 
						|
    </related>
 | 
						|
 | 
						|
    <section id="basic-manipulation">
 | 
						|
        <title>Manipulations de base de l'environnement</title>
 | 
						|
 | 
						|
        <p>La méthode la plus élémentaire pour définir une variable
 | 
						|
	d'environnement au niveau d'Apache consiste à utiliser la directive
 | 
						|
	inconditionnelle <directive module="mod_env"
 | 
						|
        >SetEnv</directive>. Les variables peuvent aussi être transmises depuis
 | 
						|
	l'environnement du shell à partir duquel le serveur a été démarré en
 | 
						|
	utilisant la directive
 | 
						|
        <directive module="mod_env">PassEnv</directive>.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
    <section id="conditional">
 | 
						|
        <title>Définitions conditionnelles en fonction des requêtes</title>
 | 
						|
 | 
						|
        <p>Pour plus de souplesse, les directives fournies par le module
 | 
						|
        <module>mod_setenvif</module> permettent de définir les
 | 
						|
	variables d'environnement en tenant compte des caractéristiques
 | 
						|
	de chaque requête. Par exemple, une
 | 
						|
	variable pourrait n'être définie que lorsqu'un navigateur spécifique
 | 
						|
	(User-Agent) a généré la requête, ou seulement quand un en-tête
 | 
						|
	Referer particulier est présent. La directive
 | 
						|
	<directive module="mod_rewrite">RewriteRule</directive> du module
 | 
						|
	<module>mod_rewrite</module> qui utilise l'option
 | 
						|
	<code>[E=...]</code> pour définir
 | 
						|
	les variables d'environnement apporte encore plus de souplesse.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
    <section id="unique-identifiers">
 | 
						|
        <title>Identifiants uniques</title>
 | 
						|
 | 
						|
        <p>Finalement, le module <module>mod_unique_id</module> définit la variable
 | 
						|
	d'environnement <code>UNIQUE_ID</code> pour chaque requête à une valeur
 | 
						|
	qui est garantie unique parmi "toutes" les requêtes 
 | 
						|
	sous des conditions très spécifiques.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
    <section id="standard-cgi">
 | 
						|
        <title>Variables CGI standards</title>
 | 
						|
 | 
						|
        <p>En plus de l'ensemble des variables d'environnement internes à la
 | 
						|
	configuration d'Apache et de celles transmises depuis le shell,
 | 
						|
	les scripts CGI	et les pages SSI
 | 
						|
	se voient affectés un ensemble de variables
 | 
						|
	d'environnement contenant des méta-informations à propos de la requête
 | 
						|
	comme préconisé dans la
 | 
						|
	<a href="http://www.ietf.org/rfc/rfc3875">spécification
 | 
						|
	sur les CGIs</a>.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
    <section id="caveats">
 | 
						|
        <title>Quelques mises en garde</title>
 | 
						|
 | 
						|
        <ul>
 | 
						|
          <li>Les directives de manipulation de l'environnement ne permettent
 | 
						|
	  pas de supplanter ou modifier les variables CGI standards.</li>
 | 
						|
 | 
						|
          <li>Lorsqu'on utilise <program>suexec</program> pour exécuter des
 | 
						|
	  scripts CGI, l'environnement est nettoyé et réduit à un ensemble de
 | 
						|
	  variables <em>sûres</em> avant l'exécution du script. La liste des
 | 
						|
	  variables <em>sûres</em> est définie à la compilation dans
 | 
						|
          <code>suexec.c</code>.</li>
 | 
						|
 | 
						|
          <li>Pour des raisons de portabilité, les noms des variables
 | 
						|
	  d'environnement ne peuvent contenir que des lettres, des chiffres, et
 | 
						|
	  le caractère "sousligné". En outre, le premier caractère ne doit pas
 | 
						|
	  être un chiffre. Les caractères qui ne satisfont pas à ces conditions
 | 
						|
	  seront remplacés par un caractère "sousligné" quand ils seront
 | 
						|
	  transmis aux scripts CGI et aux pages SSI.</li>
 | 
						|
 | 
						|
	  <li>Les contenus d'en-têtes HTTP transmis aux scripts de type
 | 
						|
	  CGI ou autre via des variables d'environnement constituent un
 | 
						|
	  cas particulier (voir plus loin). Leur nom est converti en
 | 
						|
	  majuscules et seuls les tirets sont remplacés par des
 | 
						|
	  caractères '_' ("souligné") ; si le format du nom de l'en-tête
 | 
						|
	  n'est pas valide, celui-ci est ignoré. Voir <a
 | 
						|
	  href="#fixheader">plus loin</a> pour une solution de
 | 
						|
	  contournement du problème.</li>
 | 
						|
 | 
						|
          <li>La directive <directive
 | 
						|
	  module="mod_env">SetEnv</directive> s'exécute assez tard au
 | 
						|
	  cours du traitement de la requête, ce qui signifie que des
 | 
						|
	  directives telles que <directive
 | 
						|
	  module="mod_setenvif">SetEnvIf</directive> et <directive
 | 
						|
          module="mod_rewrite">RewriteCond</directive> ne verront pas
 | 
						|
	  les variables qu'elle aura définies.</li>
 | 
						|
 | 
						|
	  <li>Lorsque le serveur cherche un chemin via une <glossary
 | 
						|
   ref="subrequest">sous-requête</glossary> interne (par exemple la
 | 
						|
   recherche d'un <directive
 | 
						|
   module="mod_dir">DirectoryIndex</directive>), ou lorsqu'il génère un
 | 
						|
   listing du contenu d'un répertoire via le module
 | 
						|
   <module>mod_autoindex</module>, la sous-requête n'hérite pas des
 | 
						|
   variables d'environnement spécifiques à la requête. En outre, à cause
 | 
						|
   des phases de l'API auxquelles <module>mod_setenvif</module> prend
 | 
						|
   part, les directives <directive
 | 
						|
   module="mod_setenvif">SetEnvIf</directive> ne sont pas évaluées
 | 
						|
   séparément dans la sous-requête.</li>
 | 
						|
        </ul>
 | 
						|
    </section>
 | 
						|
  </section>
 | 
						|
  <section id="using">
 | 
						|
    <title>Utilisation des variables d'environnement</title>
 | 
						|
 | 
						|
    <related>
 | 
						|
      <modulelist>
 | 
						|
        <module>mod_authz_host</module>
 | 
						|
        <module>mod_cgi</module>
 | 
						|
        <module>mod_ext_filter</module>
 | 
						|
        <module>mod_headers</module>
 | 
						|
        <module>mod_include</module>
 | 
						|
        <module>mod_log_config</module>
 | 
						|
        <module>mod_rewrite</module>
 | 
						|
      </modulelist>
 | 
						|
      <directivelist>
 | 
						|
        <directive module="mod_authz_core">Require</directive>
 | 
						|
        <directive module="mod_log_config">CustomLog</directive>
 | 
						|
        <directive module="mod_access_compat">Deny</directive>
 | 
						|
        <directive module="mod_ext_filter">ExtFilterDefine</directive>
 | 
						|
        <directive module="mod_headers">Header</directive>
 | 
						|
        <directive module="mod_log_config">LogFormat</directive>
 | 
						|
        <directive module="mod_rewrite">RewriteCond</directive>
 | 
						|
        <directive module="mod_rewrite">RewriteRule</directive>
 | 
						|
      </directivelist>
 | 
						|
    </related>
 | 
						|
 | 
						|
    <section id="cgi-scripts">
 | 
						|
        <title>Scripts CGI</title>
 | 
						|
 | 
						|
        <p>La communication d'informations aux scripts CGI constitue une des
 | 
						|
	principales utilisations des variables d'environnement. Comme indiqué
 | 
						|
	plus haut, l'environnement transmis aux scripts CGI comprend des
 | 
						|
	méta-informations standards à propos de la requête, en plus des
 | 
						|
	variables définies dans la configuration d'Apache. Pour plus de
 | 
						|
	détails, se référer au
 | 
						|
        <a href="howto/cgi.html">tutoriel CGI</a>.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
    <section id="ssi-pages">
 | 
						|
        <title>Pages SSI</title>
 | 
						|
 | 
						|
        <p>Les documents inclus côté serveur (SSI) traités par le filtre
 | 
						|
        <code>INCLUDES</code> du module <module>mod_include</module>,
 | 
						|
	peuvent afficher les
 | 
						|
	variables d'environnement à l'aide de l'élément <code>echo</code>,
 | 
						|
	et peuvent utiliser des variables d'environnement dans les éléments
 | 
						|
	de contrôle de flux pour rendre certaines parties d'une page
 | 
						|
        conditionnelles en fonction des caractéristiques de la requête.
 | 
						|
	Apache fournit aussi les variables d'environnement CGI standards
 | 
						|
	aux pages SSI
 | 
						|
	comme indiqué plus haut. Pour plus de détails, se référer au
 | 
						|
	<a href="howto/ssi.html">tutoriel SSI</a>.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
    <section id="access-control">
 | 
						|
        <title>Contrôle d'accès</title>
 | 
						|
 | 
						|
        <p>L'accès au serveur peut être contrôlé en fonction de la valeur de
 | 
						|
	variables d'environnement à l'aide des directives
 | 
						|
	<code>allow from env=</code> et <code>deny from env=</code>.
 | 
						|
	En association avec la directive
 | 
						|
        <directive module="mod_setenvif">SetEnvIf</directive>, ceci confère une
 | 
						|
	grande souplesse au contrôle d'accès au serveur en fonction des
 | 
						|
	caractéristiques du client. Par exemple, vous pouvez utiliser ces
 | 
						|
        directives pour interdire l'accès depuis un navigateur particulier
 | 
						|
	(User-Agent).
 | 
						|
        </p>
 | 
						|
 | 
						|
    </section>
 | 
						|
    <section id="logging">
 | 
						|
        <title>Enregistrement conditionnel des traces</title>
 | 
						|
 | 
						|
        <p>Les variables d'environnement peuvent être enregistrées dans le
 | 
						|
	fichier de log des accès à l'aide de l'option <code>%e</code> de la
 | 
						|
	directive <directive module="mod_log_config">LogFormat</directive>.
 | 
						|
	En outre, la décision de tracer ou non les requêtes peut être prise
 | 
						|
	en fonction de l'état de variables d'environnement en utilisant la
 | 
						|
	forme conditionnelle de la directive
 | 
						|
        <directive module="mod_log_config">CustomLog</directive>. En
 | 
						|
	association avec la directive <directive module="mod_setenvif"
 | 
						|
        >SetEnvIf</directive>, ceci confère une grande souplesse au contrôle
 | 
						|
	du traçage des requêtes. Par exemple, vous pouvez choisir de ne pas
 | 
						|
	tracer les requêtes pour des noms de fichiers se terminant par
 | 
						|
	<code>gif</code>, ou encore de ne tracer que les requêtes des clients
 | 
						|
	n'appartenant pas à votre sous-réseau.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
    <section id="response-headers">
 | 
						|
        <title>En-têtes de réponse conditionnels</title>
 | 
						|
 | 
						|
        <p>La directive <directive module="mod_headers">Header</directive>
 | 
						|
        peut se baser sur la présence ou l'absence d'une variable
 | 
						|
	d'environnement pour décider si un certain en-tête HTTP sera placé
 | 
						|
	dans la réponse au client. Ceci permet, par exemple, de n'envoyer un
 | 
						|
	certain en-tête de réponse que si un en-tête correspondant est présent
 | 
						|
	dans la requête du client.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
 | 
						|
    <section id="external-filter">
 | 
						|
        <title>Activation de filtres externes</title>
 | 
						|
 | 
						|
        <p>Les filtres externes configurés par le module
 | 
						|
	<module>mod_ext_filter</module> à l'aide de la directive <directive
 | 
						|
        module="mod_ext_filter">ExtFilterDefine</directive> peuvent être
 | 
						|
	activés de manière conditionnelle en fonction d'une variable
 | 
						|
	d'environnement à l'aide des options
 | 
						|
        <code>disableenv=</code> et <code>enableenv=</code>.</p>
 | 
						|
    </section>
 | 
						|
 | 
						|
    <section id="url-rewriting">
 | 
						|
        <title>Réécriture d'URL</title>
 | 
						|
 | 
						|
        <p>La forme <code>%{ENV:<em>variable</em>}</code> de
 | 
						|
	<em>TestString</em> dans la
 | 
						|
	directive <directive module="mod_rewrite">RewriteCond</directive>
 | 
						|
        permet au moteur de réécriture du module
 | 
						|
	<module>mod_rewrite</module> de prendre des
 | 
						|
	décisions conditionnées par des variables d'environnement.
 | 
						|
        Notez que les variables accessibles dans
 | 
						|
	<module>mod_rewrite</module> sans le préfixe
 | 
						|
        <code>ENV:</code> ne sont pas de véritables variables
 | 
						|
	d'environnement. Ce sont plutôt des variables spécifiques à
 | 
						|
	<module>mod_rewrite</module>
 | 
						|
        qui ne sont pas accessibles pour les autres modules.</p>
 | 
						|
    </section>
 | 
						|
  </section>
 | 
						|
 | 
						|
  <section id="special">
 | 
						|
    <title>Variables d'environnement à usage spécial</title>
 | 
						|
 | 
						|
        <p>Des problèmes d'interopérabilité ont conduit à l'introduction de
 | 
						|
	mécanismes permettant de modifier le comportement d'Apache lorsqu'il
 | 
						|
	dialogue avec certains clients. Afin de rendre ces mécanismes aussi
 | 
						|
	souples que possible, ils sont invoqués en définissant des variables
 | 
						|
	d'environnement, en général à l'aide de la directive
 | 
						|
	<directive module="mod_setenvif">BrowserMatch</directive>, bien que les
 | 
						|
	directives <directive module="mod_env">SetEnv</directive> et
 | 
						|
	<directive module="mod_env">PassEnv</directive> puissent aussi être
 | 
						|
	utilisées, par exemple.</p>
 | 
						|
 | 
						|
    <section id="downgrade">
 | 
						|
        <title>downgrade-1.0</title>
 | 
						|
 | 
						|
        <p>Ceci force le traitement d'une requête comme une requête HTTP/1.0
 | 
						|
        même si elle a été rédigée dans un langage plus récent.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
    <section id="force-gzip">
 | 
						|
        <title>force-gzip</title>
 | 
						|
          <p>Si le filtre <code>DEFLATE</code> est activé, cette variable
 | 
						|
	  d'environnement ignorera les réglages accept-encoding de votre
 | 
						|
	  navigateur et enverra une sortie compressée inconditionnellement.</p>
 | 
						|
    </section>
 | 
						|
    <section id="force-no-vary">
 | 
						|
        <title>force-no-vary</title>
 | 
						|
 | 
						|
        <p>Cette variable entraîne la suppression de tout champ
 | 
						|
	<code>Vary</code> des en-têtes de la réponse avant que cette dernière
 | 
						|
	soit renvoyée au client. Certains clients n'interprètent pas ce champ
 | 
						|
	correctement, et la définition de cette variable permet de contourner
 | 
						|
	ce problème, mais implique aussi la définition de
 | 
						|
	<strong>force-response-1.0</strong>.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
    <section id="force-response">
 | 
						|
        <title>force-response-1.0</title>
 | 
						|
 | 
						|
      <p>Cette variable force une réponse en langage HTTP/1.0 aux clients
 | 
						|
      qui envoient des requêtes dans le même langage. Elle fut implémentée à
 | 
						|
      l'origine suite à des problèmes avec les mandataires d'AOL. Certains
 | 
						|
      clients en langage HTTP/1.0 ne réagissent pas correctement face à une
 | 
						|
      réponse en langage HTTP/1.1, et cette variable peut être utilisée pour
 | 
						|
      assurer l'interopérabilité avec eux.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
 | 
						|
    <section id="gzip-only-text-html">
 | 
						|
        <title>gzip-only-text/html</title>
 | 
						|
 | 
						|
        <p>Positionnée à "1", cette variable désactive le filtre en sortie
 | 
						|
	<code>DEFLATE</code> fourni par le module <module>mod_deflate</module> pour les
 | 
						|
	types de contenu autres que <code>text/html</code>. Si vous préférez
 | 
						|
	utiliser des fichiers compressés statiquement,
 | 
						|
	<module>mod_negotiation</module> évalue aussi la variable (non
 | 
						|
	seulement pour gzip, mais aussi pour tous les encodages autres que
 | 
						|
	"identity").</p>
 | 
						|
    </section>
 | 
						|
 | 
						|
    <section id="no-gzip"><title>no-gzip</title>
 | 
						|
 | 
						|
        <p>Quand cette variable est définie, le filtre <code>DEFLATE</code> du
 | 
						|
	module <module>mod_deflate</module> est désactivé, et
 | 
						|
        <module>mod_negotiation</module> refusera de délivrer des ressources
 | 
						|
	encodées.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
 | 
						|
    <section id="no-cache"><title>no-cache</title>
 | 
						|
    	<p><em>Disponible dans les versions 2.2.12 et ultérieures d'Apache</em></p>
 | 
						|
 | 
						|
        <p>Lorsque cette variable est définie,
 | 
						|
	<module>mod_cache</module> ne sauvegardera pas de réponse
 | 
						|
	susceptible d'être mise en cache. Cette variable d'environnement
 | 
						|
	n'a aucune incidence sur le fait qu'une réponse déjà enregistrée
 | 
						|
	dans la cache soit utilisée ou non pour la requête courante.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
 | 
						|
    <section id="nokeepalive">
 | 
						|
        <title>nokeepalive</title>
 | 
						|
 | 
						|
        <p>Quand cette variable est définie, la directive
 | 
						|
	<directive module="core">KeepAlive</directive> est désactivée.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
 | 
						|
    <section id="prefer-language"><title>prefer-language</title>
 | 
						|
 | 
						|
        <p>Cette variable modifie le comportement du module
 | 
						|
	<module>mod_negotiation</module>. Si elle contient un symbole de
 | 
						|
	langage (tel que <code>en</code>, <code>ja</code>
 | 
						|
        ou <code>x-klingon</code>), <module>mod_negotiation</module> essaie de
 | 
						|
	délivrer une variante dans ce langage. S'il n'existe pas de telle
 | 
						|
	variante, le processus normal de
 | 
						|
	<a href="content-negotiation.html">négociation</a> s'applique.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
 | 
						|
    <section id="redirect-carefully">
 | 
						|
        <title>redirect-carefully</title>
 | 
						|
 | 
						|
        <p>Cette variable force le serveur à être plus prudent lors de l'envoi
 | 
						|
	d'une redirection au client. Elle est en général utilisée quand un
 | 
						|
	client présente un problème connu avec les redirections. Elle fut
 | 
						|
	implémentée à l'origine suite a un problème rencontré avec le logiciel
 | 
						|
	WebFolders de Microsoft qui ne gère pas correctement les redirections
 | 
						|
	vers des ressources de type répertoire via des méthodes DAV.</p>
 | 
						|
 | 
						|
    </section>
 | 
						|
 | 
						|
   <section id="suppress-error-charset">
 | 
						|
       <title>suppress-error-charset</title>
 | 
						|
 | 
						|
    <p><em>Disponible dans les versions postérieures à 2.0.54</em></p>
 | 
						|
 | 
						|
    <p>Quand Apache génère une redirection en réponse à une requête client,
 | 
						|
    la réponse inclut un texte destiné à être affiché au cas où le client ne
 | 
						|
    suivrait pas, ou ne pourrait pas suivre automatiquement la redirection.
 | 
						|
    Habituellement, Apache marque ce texte en accord avec le jeu de caractères
 | 
						|
    qu'il utilise, à savoir ISO-8859-1.</p>
 | 
						|
    <p> Cependant, si la redirection fait référence à une page qui utilise un
 | 
						|
    jeu de caractères différent, certaines versions de navigateurs obsolètes
 | 
						|
    essaieront d'utiliser le jeu de caractères du texte de la redirection
 | 
						|
    plutôt que celui de la page réelle.
 | 
						|
    Ceci peut entraîner, par exemple, un rendu incorrect du Grec.</p>
 | 
						|
    <p>Si cette variable d'environnement est définie, Apache omettra le jeu de
 | 
						|
    caractères pour le texte de la redirection, et les navigateurs obsolètes
 | 
						|
    précités utiliseront correctement celui de la page de destination.</p>
 | 
						|
 | 
						|
    <note type="warning">
 | 
						|
      <title>Note concernant la sécurité</title>
 | 
						|
 | 
						|
      <p>L'envoi de pages d'erreur sans spécifier un jeu de caractères peut
 | 
						|
      conduire à des attaques de type "cross-site-scripting" pour les
 | 
						|
      navigateurs qui ne respectent pas la spécification HTTP/1.1 (MSIE) et
 | 
						|
      tentent de déduire le jeu de caractères à partir du contenu. De tels
 | 
						|
      navigateurs peuvent être facilement trompés et utiliser le jeu de
 | 
						|
      caractères UTF-7 ; les contenus des données en entrée de type UTF-7
 | 
						|
      (comme les URI de requête) ne seront alors plus protégés par les
 | 
						|
      mécanismes d'échappement usuels conçus pour prévenir les attaques
 | 
						|
      de type "cross-site-scripting".</p>
 | 
						|
    </note>
 | 
						|
 | 
						|
   </section>
 | 
						|
 | 
						|
   <section id="proxy"><title>force-proxy-request-1.0, proxy-nokeepalive, proxy-sendchunked,
 | 
						|
   proxy-sendcl, proxy-chain-auth, proxy-interim-response, proxy-initial-not-pooled</title>
 | 
						|
 | 
						|
   <p>Ces directives modifient le comportement protocolaire du module
 | 
						|
   <module>mod_proxy</module>.  Voir la documentation sur
 | 
						|
   <module>mod_proxy</module> et <module>mod_proxy_http</module> pour plus de détails.</p>
 | 
						|
   </section>
 | 
						|
 | 
						|
  </section>
 | 
						|
 | 
						|
  <section id="examples">
 | 
						|
    <title>Exemples</title>
 | 
						|
 | 
						|
    <section id="fixheader">
 | 
						|
      <title>Transmission du contenu d'en-têtes non valides aux scripts
 | 
						|
      CGI</title>
 | 
						|
 | 
						|
      <p>Avec la version 2.4, Apache est plus strict avec la conversion
 | 
						|
      des en-têtes HTTP en variables d'environnement dans
 | 
						|
      <module>mod_cgi</module> et d'autres modules : dans les versions
 | 
						|
      précédentes, tout caractère invalide dans les noms d'en-têtes
 | 
						|
      était tout simplement remplacé par un caractère '_', ce qui
 | 
						|
      pouvait exposer à des attaques de type cross-site-scripting via
 | 
						|
      injection d'en-têtes (voir <a
 | 
						|
      href="http://events.ccc.de/congress/2007/Fahrplan/events/2212.en.html">Bogues
 | 
						|
      du Web inhabituelles</a>, planche 19/20).</p>
 | 
						|
 | 
						|
      <p>Si vous devez supporter un client qui envoie des en-têtes non
 | 
						|
      conformes et si ceux-ci ne peuvent pas être corrigés, il existe
 | 
						|
      une solution de contournement simple mettant en jeu les modules
 | 
						|
      <module>mod_setenvif</module> et <module>mod_headers</module>,
 | 
						|
      et permettant de prendre en compte ces en-têtes :</p>
 | 
						|
 | 
						|
<highlight language="config">
 | 
						|
# L'exemple suivant montre comment prendre en compte un en-tête<br />
 | 
						|
# Accept_Encoding non conforme envoyé par un client.
 | 
						|
#
 | 
						|
SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1
 | 
						|
RequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding
 | 
						|
</highlight>
 | 
						|
 | 
						|
    </section>
 | 
						|
 | 
						|
    <section id="misbehaving">
 | 
						|
        <title>Modification du comportement protocolaire face à des clients
 | 
						|
	réagissant de manière non conforme</title>
 | 
						|
 | 
						|
        <p>Les versions antérieures recommandaient l'ajout de ces lignes dans
 | 
						|
        httpd.conf pour tenir compte de problèmes connus avec certains clients.
 | 
						|
	Comme les clients concernés sont maintenant très peu utilisés, cet
 | 
						|
	ajout n'est pratiquement plus nécessaire.</p>
 | 
						|
<highlight language="config">
 | 
						|
#
 | 
						|
# The following directives modify normal HTTP response behavior.
 | 
						|
# The first directive disables keepalive for Netscape 2.x and browsers that
 | 
						|
# spoof it. There are known problems with these browser implementations.
 | 
						|
# The second directive is for Microsoft Internet Explorer 4.0b2
 | 
						|
# which has a broken HTTP/1.1 implementation and does not properly
 | 
						|
# support keepalive when it is used on 301 or 302 (redirect) responses.
 | 
						|
#
 | 
						|
BrowserMatch "Mozilla/2" nokeepalive
 | 
						|
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
 | 
						|
 | 
						|
#
 | 
						|
# The following directive disables HTTP/1.1 responses to browsers which
 | 
						|
# are in violation of the HTTP/1.0 spec by not being able to grok a
 | 
						|
# basic 1.1 response.
 | 
						|
#
 | 
						|
BrowserMatch "RealPlayer 4\.0" force-response-1.0
 | 
						|
BrowserMatch "Java/1\.0" force-response-1.0
 | 
						|
BrowserMatch "JDK/1\.0" force-response-1.0
 | 
						|
</highlight>
 | 
						|
 | 
						|
    </section>
 | 
						|
    <section id="no-img-log">
 | 
						|
        <title>Ne pas tracer les requêtes pour des images dans le fichier de
 | 
						|
	trace des accès</title>
 | 
						|
 | 
						|
        <p>Dans cet exemple, les requêtes pour des images n'apparaissent pas
 | 
						|
	dans le fichier de trace des accès. Il peut être facilement adapté pour
 | 
						|
	empêcher le traçage de répertoires particuliers, ou de requêtes
 | 
						|
        en provenance de certains hôtes.</p>
 | 
						|
         <highlight language="config">
 | 
						|
SetEnvIf Request_URI \.gif image-request
 | 
						|
SetEnvIf Request_URI \.jpg image-request
 | 
						|
SetEnvIf Request_URI \.png image-request
 | 
						|
CustomLog "logs/access_log" common env=!image-request
 | 
						|
        </highlight>
 | 
						|
 | 
						|
    </section>
 | 
						|
    <section id="image-theft">
 | 
						|
        <title>Prévention du "Vol d'image"</title>
 | 
						|
 | 
						|
        <p>Cet exemple montre comment empêcher les utilisateurs ne faisant pas
 | 
						|
	partie de votre serveur d'utiliser des images de votre serveur comme
 | 
						|
	images en ligne dans leurs pages. Cette configuration n'est pas
 | 
						|
	recommandée, mais elle peut fonctionner dans des circonstances bien
 | 
						|
	définies. Nous supposons que toutes vos images sont enregistrées dans
 | 
						|
	un répertoire nommé <code>/web/images</code>.</p>
 | 
						|
    	<highlight language="config">
 | 
						|
SetEnvIf Referer "^http://www\.example\.com/" local_referal
 | 
						|
# Autorise les navigateurs qui n'envoient aucune information de Referer
 | 
						|
SetEnvIf Referer "^$" local_referal
 | 
						|
<Directory "/web/images">
 | 
						|
    Require env local_referal
 | 
						|
</Directory>
 | 
						|
        </highlight>
 | 
						|
 | 
						|
        <p>Pour plus d'informations sur cette technique, voir le tutoriel sur
 | 
						|
	ServerWatch
 | 
						|
	"<a href="http://www.serverwatch.com/tutorials/article.php/1132731"
 | 
						|
	>Keeping Your Images from Adorning Other Sites</a>".</p>
 | 
						|
    </section>
 | 
						|
  </section>
 | 
						|
</manualpage>
 |