<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>mod_headers - Serveur HTTP Apache Version 2.4</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet">
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size">
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css"><link rel="stylesheet" type="text/css" href="../style/css/prettify.css">
<script src="../style/scripts/prettify.min.js">
</script>

<link href="../images/favicon.png" rel="shortcut icon"></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p>
<p class="apache">Serveur HTTP Apache Version 2.4</p>
<img alt="" src="../images/feather.png"></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif"></a></div>
<div id="path">
<a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="https://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.4</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_headers</h1>
<button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_headers.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_headers.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_headers.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_headers.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Personnalisation des en-t&ecirc;tes de requ&ecirc;tes et de r&eacute;ponses
HTTP</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur&nbsp;de&nbsp;Module:</a></th><td>headers_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Fichier&nbsp;Source:</a></th><td>mod_headers.c</td></tr></table>
<h3>Sommaire</h3>

    <p>Ce module fournit des directives permettant de contr&ocirc;ler et
    modifier les en-t&ecirc;tes de requ&ecirc;tes et de r&eacute;ponses HTTP. Les en-t&ecirc;tes
    peuvent &ecirc;tre fusionn&eacute;s, remplac&eacute;s ou supprim&eacute;s.</p>
</div>
<div id="quickview"><h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif"> <a href="#order">Chronologie du traitement</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#early">Traitement pr&eacute;coce et traitement
tardif</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#examples">Exemples</a></li>
</ul><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif"> <a href="#header">Header</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#requestheader">RequestHeader</a></li>
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_headers">Probl&egrave;mes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_headers">Signaler un bug</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="order">Chronologie du traitement <a title="Lien permanent" href="#order" class="permalink">&para;</a></h2>

    <p>Les directives fournies par <code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code> peuvent
    s'ins&eacute;rer presque partout dans la configuration du serveur, et on
    peut limiter leur port&eacute;e en les pla&ccedil;ant dans des <a href="../sections.html">sections de configuration</a>.</p>

    <p>La chronologie du traitement est importante et est affect&eacute;e par
    l'ordre d'apparition des directives dans le fichier de configuration
    et par leur placement dans les <a href="../sections.html#merging">sections de configuration</a>. Ainsi,
    ces deux directives ont un effet diff&eacute;rent si leur ordre est invers&eacute;
    :</p>

    <pre class="prettyprint lang-config">RequestHeader append MirrorID "mirror 12"
RequestHeader unset MirrorID</pre>


    <p>Dans cet ordre, l'en-t&ecirc;te <code>MirrorID</code> n'est pas d&eacute;fini.
    Si l'ordre des directives &eacute;tait invers&eacute;, l'en-t&ecirc;te
    <code>MirrorID</code> serait d&eacute;fini &agrave; "mirror 12".</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="early">Traitement pr&eacute;coce et traitement
tardif <a title="Lien permanent" href="#early" class="permalink">&para;</a></h2>
    <p><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code> peut agir soir pr&eacute;cocement, soit
    tardivement au niveau de la requ&ecirc;te. Le mode normal est le mode
    tardif, lorsque les en-t&ecirc;tes de <em>requ&ecirc;te</em> sont d&eacute;finis, imm&eacute;diatement
    avant l'ex&eacute;cution du g&eacute;n&eacute;rateur de contenu, et pour les en-t&ecirc;tes de
    <em>r&eacute;ponse</em>, juste au moment o&ugrave; la r&eacute;ponse est envoy&eacute;e sur le r&eacute;seau.
    Utilisez toujours le mode tardif sur un serveur en production.</p>

    <p>Le mode pr&eacute;coce a &eacute;t&eacute; con&ccedil;u &agrave; des fins d'aide aux tests et au
    d&eacute;bogage pour les d&eacute;veloppeurs. Les directives d&eacute;finies en utilisant
    le mot-cl&eacute; <code>early</code> sont cens&eacute;es agir au tout d&eacute;but du
    traitement de la requ&ecirc;te. Cela signifie que l'on peut les utiliser
    pour simuler diff&eacute;rentes requ&ecirc;tes et d&eacute;finir des situations de test,
    tout en gardant &agrave; l'esprit que les en-t&ecirc;tes peuvent &ecirc;tre modifi&eacute;s &agrave;
    tout moment par d'autres modules avant que le r&eacute;ponse ne soit
    g&eacute;n&eacute;r&eacute;e.</p>

    <p>Comme les directives pr&eacute;coces sont trait&eacute;es avant que le
    chemin de la requ&ecirc;te ne soit parcouru, les en-t&ecirc;tes
    pr&eacute;coces ne peuvent &ecirc;tre d&eacute;finis que dans un contexte de serveur
    principal ou de serveur virtuel. Les directives pr&eacute;coces ne peuvent
    pas d&eacute;pendre d'un chemin de requ&ecirc;te, si bien qu'elles &eacute;choueront
    dans des contextes tels que <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> ou <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="examples">Exemples <a title="Lien permanent" href="#examples" class="permalink">&para;</a></h2>

    <ol>
      <li>
        Copie tous les en-t&ecirc;tes de requ&ecirc;te qui commencent par "TS" vers
	les en-t&ecirc;tes de la r&eacute;ponse :

        <pre class="prettyprint lang-config">Header echo ^TS</pre>

      </li>

      <li>
        Ajoute &agrave; la r&eacute;ponse un en-t&ecirc;te, <code>mon-en-t&ecirc;te</code>, qui
	contient un horodatage permettant de d&eacute;terminer le moment o&ugrave; la
	requ&ecirc;te a &eacute;t&eacute; re&ccedil;ue, et le temps qui s'est &eacute;coul&eacute; jusqu'&agrave; ce que
	la requ&ecirc;te ait commenc&eacute; &agrave; &ecirc;tre servie. Cet en-t&ecirc;te peut &ecirc;tre
	utilis&eacute; par le client pour estimer la charge du serveur ou
	isoler les goulets d'&eacute;tranglement entre le client et le
	serveur.

        <pre class="prettyprint lang-config">Header set mon-en-t&ecirc;te "%D %t"</pre>


        <p>le r&eacute;sultat est l'ajout &agrave; la r&eacute;ponse d'un en-t&ecirc;te du type :</p>

        <div class="example"><p><code>
          mon-en-t&ecirc;te: D=3775428 t=991424704447256
        </code></p></div>
      </li>

      <li>
        Dit Bonjour &agrave; Joe

        <div class="example"><p><code>
          Header set mon-en-t&ecirc;te "Bonjour Joe. Il a fallu %D microsecondes \<br>
          &agrave; Apache pour servir cette requ&ecirc;te."
        </code></p></div>

        <p>le r&eacute;sultat est l'ajout &agrave; la r&eacute;ponse d'un en-t&ecirc;te du type :</p>

        <pre class="prettyprint lang-config">	Header set MyHeader "Bonjour Joe. Il a fallu D=3775428 microsecondes &agrave; Apache
          pour servir cette requ&ecirc;te."</pre>

      </li>

      <li>
        Ajoute l'en-t&ecirc;te <code>mon-en-t&ecirc;te</code> &agrave; la r&eacute;ponse si et
	seulement si l'en-t&ecirc;te <code>mon-en-t&ecirc;te-requ&ecirc;te</code> est
	pr&eacute;sent dans la requ&ecirc;te. Ceci peut s'av&eacute;rer utile pour g&eacute;n&eacute;rer
	des en-t&ecirc;tes de r&eacute;ponse "&agrave; la t&ecirc;te du client". Notez que cet
	exemple n&eacute;cessite les services du module
	<code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code>.

        <pre class="prettyprint lang-config">SetEnvIf MyRequestHeader myvalue HAVE_MyRequestHeader
Header set MyHeader "%D %t mytext" env=HAVE_MyRequestHeader</pre>


        <p>Si l'en-t&ecirc;te <code>mon-en-t&ecirc;te-requ&ecirc;te: mavaleur</code> est
	pr&eacute;sent dans la requ&ecirc;te HTTP, la r&eacute;ponse contiendra un en-t&ecirc;te
	du type :</p>

        <div class="example"><p><code>
          mon-en-t&ecirc;te: D=3775428 t=991424704447256 montexte
        </code></p></div>
      </li>

      <li>
        Permet &agrave; DAV de fonctionner avec Apache sur SSL (voir la <a href="http://svn.haxx.se/users/archive-2006-03/0549.shtml">description
	du probl&egrave;me</a>) en rempla&ccedil;ant <var>https:</var> par
	<var>http:</var> dans l'en-t&ecirc;te <var>Destination</var> :

        <pre class="prettyprint lang-config">RequestHeader edit Destination ^https: http: early</pre>

      </li>

      <li>
        D&eacute;finit la valeur d'un m&ecirc;me en-t&ecirc;te sous de multiples conditions
	non exclusives, mais ne duplique pas une valeur d&eacute;j&agrave; d&eacute;finie
	dans l'en-t&ecirc;te qui en r&eacute;sulte. Si toutes les conditions
	suivantes sont satisfaites pour une requ&ecirc;te (en d'autres termes,
	si les trois variables d'environnement <code>CGI</code>,
	<code>NO_CACHE</code> et <code>NO_STORE</code> existent pour la
	requ&ecirc;te) :

        <pre class="prettyprint lang-config">Header merge Cache-Control no-cache env=CGI
Header merge Cache-Control no-cache env=NO_CACHE
Header merge Cache-Control no-store env=NO_STORE</pre>


        <p>alors, la r&eacute;ponse contiendra l'en-t&ecirc;te suivant :</p>

        <div class="example"><p><code>
          Cache-Control: no-cache, no-store
        </code></p></div>

        <p>Si <code>append</code> avait &eacute;t&eacute; utilis&eacute; &agrave; la place de
	<code>merge</code>, la r&eacute;ponse aurait contenu l'en-t&ecirc;te suivant
	:</p>

        <div class="example"><p><code>
          Cache-Control: no-cache, no-cache, no-store
        </code></p></div>
      </li>
      <li>
        D&eacute;finit un cookie de test si et seulement si le client n'envoie
	pas de cookie
        <pre class="prettyprint lang-config">Header set Set-Cookie testcookie "expr=-z %{req:Cookie}"</pre>

      </li>
      <li>
        Ajoute un en-t&ecirc;te de mise en cache pour les r&eacute;ponses avec un
	code d'&eacute;tat HTTP de 200
        <pre class="prettyprint lang-config">Header append Cache-Control s-maxage=600 "expr=%{REQUEST_STATUS} == 200"</pre>

      </li>

    </ol>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="header">Directive <span id="Header">Header</span> <a title="Lien permanent" href="#header" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure les en-t&ecirc;tes d'une r&eacute;ponse HTTP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>Header [<var>condition</var>] add|append|echo|edit|edit*|merge|set|setifempty|unset|note
<var>en-t&ecirc;te</var> [[expr=]<var>valeur</var>
[<var>remplacement</var>]
[early|env=[!]<var>variable</var>|expr=<var>expression</var>]]
</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_headers</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>SetIfEmpty est disponible depuis la version 2.4.7 du
serveur HTTP Apache ; le param&egrave;tre expr=valeur a &eacute;t&eacute; introduit avec la
version 2.4.10</td></tr>
</table>
    <p>Cette directive permet de remplacer, fusionner, ou
    supprimer des en-t&ecirc;tes de r&eacute;ponse HTTP. L'en-t&ecirc;te est modifi&eacute; juste
    apr&egrave;s que le gestionnaire de contenu et les filtres en sortie ne
    s'ex&eacute;cutent, ce qui permet la modification des en-t&ecirc;tes
    sortants.</p>

    <p>L'argument optionnel <var>condition</var> permet de d&eacute;terminer
    sur quelle table interne d'en-t&ecirc;tes de r&eacute;ponses cette directive va
    op&eacute;rer : <code>onsuccess</code> (valeur par d&eacute;faut, peut &ecirc;tre omis) ou
    <code>always</code>. A la diff&eacute;rence de ceux de la premi&egrave;re table, les
    en-t&ecirc;tes de la seconde sont ajout&eacute;s &agrave; la r&eacute;ponse m&ecirc;me en cas d'erreur et
    sont conserv&eacute;s au fil des redirections internes (par exemple les
    gestionnaires ErrorDocument). Notez aussi que la r&eacute;p&eacute;tition
    de cette directive avec les deux conditions peut &ecirc;tre pertinente
    dans certains sc&eacute;narios, car <code>always</code> n'englobe pas
    <code>onsuccess</code> en ce qui concerne les en-t&ecirc;tes existants :</p>

    <ul>
       <li>Vous ajoutez un en-t&ecirc;te &agrave; une r&eacute;ponse
       g&eacute;n&eacute;r&eacute;e localement et &eacute;chou&eacute;e (non-2xx),
       une redirection par exemple, et dans ce cas, seule la table
       correspondant &agrave; <code>always</code> est utilis&eacute;e dans la r&eacute;ponse
       d&eacute;finitive.</li>
       <li>Vous modifiez ou supprimez un en-t&ecirc;te g&eacute;n&eacute;r&eacute; par un script CGI ou par
       <code class="module"><a href="../mod/mod_proxy_fcgi.html">mod_proxy_fcgi</a></code>, auquel cas, les en-t&ecirc;tes des scripts CGI
       sont dans la table correspondant &agrave; <code>always</code> et non dans la
       table par d&eacute;faut.</li>
       <li>Vous modifiez ou supprimez un en-t&ecirc;te g&eacute;n&eacute;r&eacute; par tel ou tel
       composant du serveur, mais cet en-t&ecirc;te n'est pas trouv&eacute; par la
       condition par d&eacute;faut <code>onsuccess</code>.</li>
    </ul>

    <p>Comme il n'y a pas de liste unique "normalis&eacute;e" d'en-t&ecirc;tes, la mani&egrave;re
    dont httpd stocke en interne les en-t&ecirc;tes des r&eacute;ponses HTTP est &agrave; l'origine
    de la fonctionnalit&eacute; que constitue la diff&eacute;rence entre
    <code>onsuccess</code> et <code>always</code>. Si vous ne gardez pas &agrave;
    l'esprit le concept ci-apr&egrave;s lors de l'&eacute;criture de votre configuration,
    certaines r&eacute;ponses HTTP pourront contenir des en-t&ecirc;tes dupliqu&eacute;s
    (ce qui pourra d&eacute;router les utilisateurs ou m&ecirc;me parfois les clients HTTP). Supposons par
    exemple que votre configuration comporte un mandataire PHP simple avec
    <code class="module"><a href="../mod/mod_proxy_fcgi.html">mod_proxy_fcgi</a></code> et que votre script PHP d'arri&egrave;re-plan
    ajoute l'en-t&ecirc;te <code>X-Foo: bar</code> &agrave; chaque r&eacute;ponse HTTP. Comme d&eacute;crit
    plus haut, <code class="module"><a href="../mod/mod_proxy_fcgi.html">mod_proxy_fcgi</a></code> utilise la table
    <code>always</code> pour stocker les en-t&ecirc;tes, et une configuration comme la
    suivante n'aboutira pas au r&eacute;sultat attendu car l'en-t&ecirc;te sera dupliqu&eacute;
    avec les deux valeurs :</p>

    <pre class="prettyprint lang-config"># la valeur de X-Foo est d&eacute;finie dans la table d'en-t&ecirc;tes 'onsuccess'
Header set X-Foo: baz</pre>
    

    <p>Plusieurs mod&egrave;les de configuration permettent de contourner ce probl&egrave;me,
    comme celui-ci :</p>

        <pre class="prettyprint lang-config"># 'onsuccess' peut &ecirc;tre omis car il s'agit de la valeur par d&eacute;faut
Header onsuccess unset X-Foo
Header always set X-Foo "baz"</pre>


    <p>Outre le param&egrave;tre <var>condition</var> d&eacute;crit ci-dessus, vous
    pouvez limiter une action en fonction de codes d'&eacute;tat HTTP, par
    exemple pour les requ&ecirc;tes mandat&eacute;es ou g&eacute;n&eacute;r&eacute;es par un programme
    CGI. Voir l'exemple qui utilise %{REQUEST_STATUS} dans la section
    ci-dessus.</p>

    <p>L'action que cette directive provoque est d&eacute;termin&eacute;e par le
    premier argument (ou par le second argument si une
    <var>condition</var> est sp&eacute;cifi&eacute;e). Il peut prendre
    une des valeurs suivantes :</p>

    <div class="warning"><h3>Avertissement</h3>
        <p>Vous devez lire la diff&eacute;rence, d&eacute;crite plus haut, entre les listes
	d'en-t&ecirc;tes <code>always</code> et <code>onsuccess</code> avant de lire
	la liste d'actions ci-dessous car cet important concept s'applique
	encore ici. En fait, chaque action fonctionne telle qu'elle est d&eacute;crite
	mais seulement pour la liste d'en-t&ecirc;tes cible.</p>
    </div>

    <dl>
    <dt><code>add</code></dt>
    <dd>L'en-t&ecirc;te est ajout&eacute; au jeu d'en-t&ecirc;tes pr&eacute;existant, m&ecirc;me s'il
    existe d&eacute;j&agrave;. Ceci peut conduire &agrave; la pr&eacute;sence de deux (ou plusieurs)
    en-t&ecirc;tes poss&egrave;dant le m&ecirc;me nom et donc induire des cons&eacute;quences
    impr&eacute;vues ; en g&eacute;n&eacute;ral, il est pr&eacute;f&eacute;rable d'utiliser
    <code>set</code>, <code>append</code> ou <code>merge</code>.</dd>

    <dt><code>append</code></dt>
    <dd>La valeur d'en-t&ecirc;te est ajout&eacute;e &agrave; tout en-t&ecirc;te existant de m&ecirc;me
    nom. Lorsqu'une nouvelle valeur est ainsi ajout&eacute;e, elle est s&eacute;par&eacute;e
    de celles qui sont d&eacute;j&agrave; pr&eacute;sentes par une virgule. Il s'agit de la
    m&eacute;thode HTTP standard permettant d'affecter plusieurs valeurs &agrave; un
    en-t&ecirc;te. Notez que l&rsquo;en-t&ecirc;te <code>Set-Cookie</code> est une exception&nbsp;: la
    <a href="https://www.rfc-editor.org/rfc/rfc6265">RFC 6265</a> pr&eacute;conise plusieurs en-t&ecirc;tes <code>Set-Cookie</code> au lieu
    de plusieurs valeurs s&eacute;par&eacute;es par des virgules. Utilisez <code>add</code> au
    lieu de <code>append</code> pour <code>Set-Cookie</code>.</dd>

    <dt><code>echo</code></dt>
    <dd>Les en-t&ecirc;tes de la requ&ecirc;te poss&eacute;dant le nom sp&eacute;cifi&eacute; sont
    recopi&eacute;s vers les en-t&ecirc;tes de la r&eacute;ponse. <var>en-t&ecirc;te</var> peut
    &ecirc;tre une <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expression rationnelle</a>, et
    <var>valeur</var> ne doit pas &ecirc;tre pr&eacute;sent.</dd>

    <dt><code>edit</code></dt>
    <dt><code>edit*</code></dt>
    <dd>Si l'en-t&ecirc;te existe, sa valeur est modifi&eacute;e en fonction d'une
    <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expression rationnelle</a> de type
    recherche/remplacement. L'argument <var>valeur</var> est une
    <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expression rationnelle</a>, et
    l'argument <var>remplacement</var> une cha&icirc;ne de caract&egrave;res de
    remplacement qui peut contenir des r&eacute;f&eacute;rences
    arri&egrave;res ou des sp&eacute;cificateurs de format. La forme <code>edit</code> n'effectuera une
    recherche/remplacement qu'une seule fois dans la valeur de
    l'en-t&ecirc;te, alors que la forme <code>edit*</code> en effectuera autant
    que le nombre d'apparition de la cha&icirc;ne &agrave; remplacer.</dd>

    <dt><code>merge</code></dt>
    <dd>La valeur d'en-t&ecirc;te est ajout&eacute;e &agrave; tout en-t&ecirc;te de m&ecirc;me nom, sauf
    si elle appara&icirc;t d&eacute;j&agrave; dans la liste des valeurs pr&eacute;existantes de
    l'en-t&ecirc;te s&eacute;par&eacute;es par des virgules. Lorsqu'une nouvelle valeur est
    ainsi ajout&eacute;e, elle est s&eacute;par&eacute;e de celles qui sont d&eacute;j&agrave; pr&eacute;sentes
    par une virgule. Il s'agit de la m&eacute;thode HTTP standard permettant
    d'affecter plusieurs valeurs &agrave; un en-t&ecirc;te. Les valeurs sont
    compar&eacute;es en tenant compte de la casse, et apr&egrave;s le traitement de
    tous les sp&eacute;cificateurs de format. Une valeur entour&eacute;e de guillemets
    est consid&eacute;r&eacute;e comme diff&eacute;rente de la m&ecirc;me valeur mais sans
    guillemets.</dd>

    <dt><code>set</code></dt>
    <dd>L'en-t&ecirc;te est d&eacute;fini, rempla&ccedil;ant tout en-t&ecirc;te pr&eacute;existant avec
    le m&ecirc;me nom. L'argument <var>valeur</var> peut &ecirc;tre une cha&icirc;ne de
    formatage.</dd>

    <dt><code>setifempty</code></dt>
    <dd>L'en-t&ecirc;te est d&eacute;fini, mais seulement s'il n'existe
    aucun en-t&ecirc;te avec le m&ecirc;me nom.
    <div class="note">
    L'en-t&ecirc;te Content-Type est un cas particulier car il est possible que sa
    valeur ait &eacute;t&eacute; d&eacute;termin&eacute;e mais que l'en-t&ecirc;te ne soit pas pr&eacute;sent dans la
    r&eacute;ponse lorsque <code>setifempty</code> est &eacute;valu&eacute;. Dans ce cas, il est
    pr&eacute;f&eacute;rable d'utiliser <code>set</code> comme dans l'exemple suivant :
    <pre class="prettyprint lang-config">Header set Content-Type "text/plain" "expr=-z %{CONTENT_TYPE}"</pre>

    </div></dd>

    <dt><code>unset</code></dt>
    <dd>L'en-t&ecirc;te est supprim&eacute; s'il existe. Si plusieurs en-t&ecirc;tes
    poss&egrave;dent le m&ecirc;me nom, ils seront tous supprim&eacute;s. L'argument
    <var>value</var> ne doit pas appara&icirc;tre.</dd>

    <dt><code>note</code></dt>
    <dd>La valeur de l'<var>en-t&ecirc;te</var> consid&eacute;r&eacute; est copi&eacute;e dans une
    note interne dont le nom est sp&eacute;cifi&eacute; via l'argument
    <var>valeur</var>. Ceci permet de journaliser la valeur d'un en-t&ecirc;te
    envoy&eacute; par un programme CGI ou une ressource mandat&eacute;e, m&ecirc;me s'il
    est pr&eacute;vu de l'effacer.<br>
    Disponible &agrave; partir de la version 2.4.7 du serveur HTTP Apache.</dd>

    </dl>    

    <p>Cet argument est suivi d'un nom d'<var>en-t&ecirc;te</var> qui peut se
    terminer par un caract&egrave;re ':', mais ce n'est pas obligatoire. La
    casse est ignor&eacute;e avec <code>set</code>, <code>append</code>,
    <code>merge</code>, <code>add</code>, <code>unset</code> et
    <code>edit</code>. Le nom d'<var>en-t&ecirc;te</var> est sensible &agrave; la
    casse pour <code>echo</code> et peut &ecirc;tre une <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expression rationnelle</a>.</p>

    <p>Avec <code>set</code>, <code>append</code>, <code>merge</code> et
    <code>add</code>, une <var>valeur</var> est sp&eacute;cifi&eacute;e comme
    argument suivant. Si <var>valeur</var> contient des espaces, elle
    doit &ecirc;tre entour&eacute;e de guillemets. <var>valeur</var> peut &ecirc;tre une
    cha&icirc;ne de caract&egrave;res, une cha&icirc;ne contenant des sp&eacute;cificateurs de
    format propres &agrave; <code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code> (et des caract&egrave;res
    litt&eacute;raux), ou une expression  <a href="../expr.html">ap_expr</a>
    pr&eacute;fix&eacute;e par <em>expr=</em>.</p>
    
    <p><var>valeur</var> supporte les sp&eacute;cificateurs de format suivants :</p>

    <table class="bordered"><tr class="header"><th>Format</th><th>Description</th></tr>
<tr><td><code>%%</code></td>
        <td>Le caract&egrave;re pourcentage</td></tr>
<tr class="odd"><td><code>%t</code></td>
        <td>Le moment de r&eacute;ception de la requ&ecirc;te en temps
	universel coordonn&eacute; depuis le temps epoch (Jan. 1, 1970) et
	exprim&eacute; en microsecondes. La valeur est pr&eacute;c&eacute;d&eacute;e de
	<code>t=</code>.</td></tr>
<tr><td><code>%D</code></td>
        <td>Le temps &eacute;coul&eacute; entre la r&eacute;ception de la requ&ecirc;te et l'envoi
	des en-t&ecirc;tes sur le r&eacute;seau. Il s'agit de la dur&eacute;e de traitement
	de la requ&ecirc;te. La valeur est pr&eacute;c&eacute;d&eacute;e de <code>D=</code>. La
	valeur est exprim&eacute;e en microsecondes.</td></tr>
<tr class="odd"><td><code>%l</code></td>
        <td>La charge moyenne courante du serveur proprement dit. Ce
	sont les valeurs obtenues par <code>getloadavg()</code> qui
	repr&eacute;sentent la charge moyenne courante, sur 5 minutes et sur 15
	minutes. Chaque valeur est pr&eacute;c&eacute;d&eacute;e de <code>l=</code> et
	s&eacute;par&eacute;e de la suivante par un <code>/</code>.<br>
	Disponible depuis la version 2.4.4 du serveur HTTP Apache.
        </td></tr>
<tr><td><code>%i</code></td>
        <td>Le pourcentage courant de httpd au repos (de 0 &agrave; 100)
	en se basant sur le nombre de processus et threads disponibles.
	La valeur est pr&eacute;c&eacute;d&eacute;e de <code>i=</code>.<br>
	Disponible depuis la version 2.4.4 du serveur HTTP Apache.
        </td></tr>
<tr class="odd"><td><code>%b</code></td>
        <td>Le pourcentage courant de httpd utilis&eacute; (de 0 &agrave; 100)
	en se basant sur le nombre de processus et threads disponibles.
	La valeur est pr&eacute;c&eacute;d&eacute;e de <code>b=</code>.<br>
	Disponible depuis la version 2.4.4 du serveur HTTP Apache.
        </td></tr>
<tr><td><code>%{NOM_VARIABLE}e</code></td>
        <td>Le contenu de la <a href="../env.html">variable
	d'environnement</a> <code>NOM_VARIABLE</code>.</td></tr>
<tr class="odd"><td><code>%{NOM_VARIABLE}s</code></td>
        <td>Le contenu de la <a href="../env.html">variable
	d'environnement SSL</a> <code>NOM_VARIABLE</code>, si
	<code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> est activ&eacute;.</td></tr>
</table>

    <div class="note"><h3>Note</h3>
      <p>Le sp&eacute;cificateur de format <code>%s</code> est disponible
      depuis la version 2.1 d'Apache ; il peut &ecirc;tre utilis&eacute; &agrave; la place
      de <code>%e</code> pour &eacute;viter de devoir sp&eacute;cifier
      <code>SSLOptions +StdEnvVars</code>. Cependant, si
      <code>SSLOptions +StdEnvVars</code> doit tout de m&ecirc;me &ecirc;tre
      sp&eacute;cifi&eacute; pour une raison quelconque, <code>%e</code> sera plus
      efficace que <code>%s</code>.</p>
    </div>

    <div class="note"><h3>Note &agrave; propos des valeurs des expressions</h3>
    <p>Lorsque le param&egrave;tre valeur utilise l'interpr&eacute;teur <a href="../expr.html">ap_expr</a>, certaines syntaxes d'expressions
    seront diff&eacute;rentes des exemples qui &eacute;valuent des expressions
    <em>bool&eacute;ennes</em> telles que &lt;If&gt; :</p>
    <ul>
      <li>Le point de d&eacute;part de la syntaxe est 'string' au lieu de
      'expr'.</li>
      <li>Les appels de fonction utilisent la syntaxe %{funcname:arg} au
      lieu de funcname(arg).</li>
      <li>Les fonctions multi-arguments ne sont pas encore disponibles
      depuis le point de d&eacute;part 'string'.</li>
      <li>Il faut mettre entre guillemets l'ensemble du param&egrave;tre, comme
      dans l'exemple suivant : 
          <pre class="prettyprint lang-config">Header set foo-checksum "expr=%{md5:foo}"</pre>

       </li>
                   
    </ul>
    </div>

    <p><code>edit</code>n&eacute;cessite les deux arguments
    <var>valeur</var>, qui est une <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expression
    rationnelle</a>, et une cha&icirc;ne additionnelle
    <var>remplacement</var>. Depuis la version 2.4.7, la cha&icirc;ne de
    remplacement peut aussi
    contenir des sp&eacute;cificateurs de format.</p>

    <p>La directive <code class="directive">Header</code> peut &ecirc;tre suivie d'un
    argument additionnel qui peut prendre les valeurs suivantes :</p>

    <dl>
    <dt><code>early</code></dt>
    <dd>Sp&eacute;cifie <a href="#early">traitement pr&eacute;alable</a>.</dd>
    <dt><code>env=[!]<var>variable</var></code></dt>
    <dd>La directive est appliqu&eacute;e si et seulement si la <a href="../env.html">variable d'environnement</a>
    <code>variable</code> existe. Un <code>!</code> devant
    <code>variable</code> inverse le test, et la directive ne
    s'appliquera alors que si <code>variable</code> n'est pas d&eacute;finie.</dd>
    <dt><code>expr=<var>expression</var></code></dt>
    <dd>La directive s'applique si et seulement si <var>expression</var>
    est &eacute;valu&eacute;e &agrave; true. Vous trouverez plus de d&eacute;tails &agrave; propos de la
    syntaxe et de l'&eacute;valuation des expressions dans la documentation <a href="../expr.html">ap_expr</a>.
    <pre class="prettyprint lang-config">         # Cet exemple retarde l'&eacute;valuation de la clause de condition par
	 # rapport &agrave; &lt;If&gt;
         Header always set CustomHeader my-value "expr=%{REQUEST_URI} =~ m#^/special_path.php$#"</pre>

    </dd>
    </dl>

    <p>Except&eacute; le cas du mode <a href="#early">pr&eacute;coce</a>, les
    directives <code class="directive">Header</code> sont trait&eacute;es juste avant
    l'envoi de la r&eacute;ponse sur le r&eacute;seau. Cela signifie qu'il est
    possible de d&eacute;finir et/ou modifier la plupart des en-t&ecirc;tes, &agrave;
    l'exception de certains en-t&ecirc;tes qui sont ajout&eacute;s par le filtre
    d'en-t&ecirc;te HTTP. Avant la version 2.2.12, il n'&eacute;tait pas
    possible de modifier l'en-t&ecirc;te Content-Type avec cette directive.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="requestheader">Directive <span id="RequestHeader">RequestHeader</span> <a title="Lien permanent" href="#requestheader" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure les en-t&ecirc;tes d'une requ&ecirc;te HTTP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RequestHeader add|append|edit|edit*|merge|set|setifempty|unset
<var>en-t&ecirc;te</var> [[expr=]<var>valeur</var>
[<var>remplacement</var>]
[early|env=[!]<var>variable</var>|expr=<var>expression</var>]]
</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_headers</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>SetIfEmpty est disponible depuis la version 2.4.7 du
serveur HTTP Apache ; le param&egrave;tre expr=valeur a &eacute;t&eacute; introduit avec la
version 2.4.10</td></tr>
</table>
    <p>Cette directive permet de remplacer, fusionner, modifier ou
    supprimer des en-t&ecirc;tes de requ&ecirc;te HTTP. L'en-t&ecirc;te est modifi&eacute; juste
    avant que le gestionnaire de contenu ne s'ex&eacute;cute, ce qui permet la
    modification des en-t&ecirc;tes entrants. L'action effectu&eacute;e est
    d&eacute;termin&eacute;e par le premier argument. Ce dernier accepte les valeurs
    suivantes :</p>

    <dl>

    <dt><code>add</code></dt>
    <dd>L'en-t&ecirc;te est ajout&eacute; au jeu d'en-t&ecirc;tes pr&eacute;existant, m&ecirc;me s'il
    existe d&eacute;j&agrave;. Ceci peut conduire &agrave; la pr&eacute;sence de deux (ou plusieurs)
    en-t&ecirc;tes poss&egrave;dant le m&ecirc;me nom et donc induire des cons&eacute;quences
    impr&eacute;vues ; en g&eacute;n&eacute;ral, il est pr&eacute;f&eacute;rable d'utiliser
    <code>set</code>, <code>append</code> ou <code>merge</code>.</dd>

    <dt><code>append</code></dt>
    <dd>La valeur d'en-t&ecirc;te est ajout&eacute;e &agrave; tout en-t&ecirc;te existant de m&ecirc;me
    nom. Lorsqu'une nouvelle valeur est ainsi ajout&eacute;e, elle est s&eacute;par&eacute;e
    de celles qui sont d&eacute;j&agrave; pr&eacute;sentes par une virgule. Il s'agit de la
    m&eacute;thode HTTP standard permettant d'affecter plusieurs valeurs &agrave; un
    en-t&ecirc;te.</dd>

    <dt><code>edit</code></dt>
    <dt><code>edit*</code></dt>
    <dd>Si l'en-t&ecirc;te existe, sa valeur est modifi&eacute;e en fonction d'une
    <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expression rationnelle</a> de type
    recherche/remplacement. L'argument <var>valeur</var> est une
    <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expression rationnelle</a>, et
    l'argument <var>remplacement</var> une cha&icirc;ne de caract&egrave;res de
    remplacement qui peut contenir des r&eacute;f&eacute;rences
    arri&egrave;res ou des sp&eacute;cificateurs de format. Avec
    <code>edit</code>, la cha&icirc;ne de l'en-t&ecirc;te correspondant au mod&egrave;le ne
    sera recherch&eacute;e et remplac&eacute;e qu'une seule fois, alors qu'avec
    <code>edit*</code>, elle le sera pour chacune de ses instances si
    elle appara&icirc;t plusieurs fois.</dd>

    <dt><code>merge</code></dt>
    <dd>La valeur d'en-t&ecirc;te est ajout&eacute;e &agrave; tout en-t&ecirc;te de m&ecirc;me nom, sauf
    si elle appara&icirc;t d&eacute;j&agrave; dans la liste des valeurs pr&eacute;existantes de
    l'en-t&ecirc;te s&eacute;par&eacute;es par des virgules. Lorsqu'une nouvelle valeur est
    ainsi ajout&eacute;e, elle est s&eacute;par&eacute;e de celles qui sont d&eacute;j&agrave; pr&eacute;sentes
    par une virgule. Il s'agit de la m&eacute;thode HTTP standard permettant
    d'affecter plusieurs valeurs &agrave; un en-t&ecirc;te. Les valeurs sont
    compar&eacute;es en tenant compte de la casse, et apr&egrave;s le traitement de
    tous les sp&eacute;cificateurs de format. Une valeur entour&eacute;e de guillemets
    est consid&eacute;r&eacute;e comme diff&eacute;rente de la m&ecirc;me valeur mais sans
    guillemets.</dd>

    <dt><code>set</code></dt>
    <dd>L'en-t&ecirc;te est d&eacute;fini, rempla&ccedil;ant tout en-t&ecirc;te pr&eacute;existant avec
    le m&ecirc;me nom.</dd>

    <dt><code>setifempty</code></dt>
    <dd>L'en-t&ecirc;te est d&eacute;fini, mais seulement s'il n'existe
    aucun en-t&ecirc;te avec le m&ecirc;me nom.<br>
    Disponible depuis la version 2.4.7 du serveur HTTP Apache.</dd>

    <dt><code>unset</code></dt>
    <dd>L'en-t&ecirc;te est supprim&eacute; s'il existe. Si plusieurs en-t&ecirc;tes
    poss&egrave;dent le m&ecirc;me nom, ils seront tous supprim&eacute;s. L'argument
    <var>value</var> ne doit pas appara&icirc;tre.</dd>
    </dl>

    <p>Cet argument est suivi d'un nom d'en-t&ecirc;te qui peut se terminer
    par un caract&egrave;re ':', mais ce n'est pas obligatoire. La casse est
    ignor&eacute;e. Avec <code>set</code>, <code>append</code>,
    <code>merge</code> et <code>add</code>, une <var>valeur</var> est
    fournie en troisi&egrave;me argument. Si une <var>valeur</var> contient des
    espaces, elle doit &ecirc;tre entour&eacute;e de guillemets. Avec
    <code>unset</code>, aucune <var>valeur</var> ne doit appara&icirc;tre.
    <var>valeur</var> peut &ecirc;tre une cha&icirc;ne de caract&egrave;res, une cha&icirc;ne
    contenant des sp&eacute;cificateurs de format, ou une combinaison des deux.
    Les sp&eacute;cificateurs de format support&eacute;s sont les m&ecirc;mes que ceux de la
    directive <code class="directive"><a href="#header">Header</a></code>, &agrave;
    laquelle vous pouvez vous reporter pour plus de d&eacute;tails. Avec
    <code>edit</code>, les deux arguments <var>valeur</var> et
    <var>remplacement</var> sont obligatoires, et correspondent
    respectivement &agrave; une <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expression
    rationnelle</a> et &agrave; une cha&icirc;ne de remplacement.</p>

    <p>La directive <code class="directive">RequestHeader</code> peut &ecirc;tre
    suivie d'un argument suppl&eacute;mentaire, qui pourra prendre les valeurs
    suivantes :</p>
    <dl>
    <dt><code>early</code></dt>
    <dd>Sp&eacute;cifie <a href="#early">traitement pr&eacute;alable</a>.</dd>
    <dt><code>env=[!]<var>variable</var></code></dt>
    <dd>La directive est appliqu&eacute;e si et seulement si la <a href="../env.html">variable d'environnement</a>
    <code>variable</code> existe. Un <code>!</code> devant
    <code>variable</code> inverse le test, et la directive ne
    s'appliquera alors que si <code>variable</code> n'est pas d&eacute;finie.</dd>
    <dt><code>expr=<var>expression</var></code></dt>
    <dd>La directive s'applique si et seulement si <var>expression</var>
    est &eacute;valu&eacute;e &agrave; true. Vous trouverez plus de d&eacute;tails &agrave; propos de la
    syntaxe et de l'&eacute;valuation des expressions dans la documentation <a href="../expr.html">ap_expr</a>.</dd>
    </dl>

    <p>Except&eacute; le cas du mode <a href="#early">pr&eacute;coce</a>, la directive
    <code class="directive">RequestHeader</code> est trait&eacute;e juste avant la
    prise en compte de la requ&ecirc;te par son gestionnaire, au cours de la
    phase de v&eacute;rification. Ceci permet la modification des en-t&ecirc;tes
    g&eacute;n&eacute;r&eacute;s par le navigateur, ou par les filtres en entr&eacute;e
    d'Apache.</p>

</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_headers.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_headers.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_headers.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_headers.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autoris&eacute; sous <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
var langToggle = document.querySelector('.lang-toggle');
var topLang = document.querySelector('.toplang');
if (langToggle && topLang) {
    langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); });
}
var qv = document.getElementById('quickview');
if (qv) {
    document.body.appendChild(qv);
    var qvBtn = document.createElement('button');
    qvBtn.className = 'qv-toggle';
    qvBtn.setAttribute('aria-label', 'Toggle page navigation');
    qvBtn.innerHTML = '&#9776;';
    document.body.appendChild(qvBtn);
    qvBtn.addEventListener('click', function() {
        var isOpen = qv.classList.toggle('open');
        if (isOpen) {
            qv.style.top = window.scrollY + 10 + 'px';
        }
    });
    window.addEventListener('scroll', function() { qv.classList.remove('open'); });
}
//--><!]]></script>
</body></html>