Serveur Apache HTTP Version 2.4
Description: | Personnalisation des en-t�tes de requ�tes et de r�ponses HTTP |
---|---|
Statut: | Extension |
Identificateur�de�Module: | headers_module |
Fichier�Source: | mod_headers.c |
Ce module fournit des directives permettant de contr�ler et modifier les en-t�tes de requ�tes et de r�ponses HTTP. Les en-t�tes peuvent �tre fusionn�s, remplac�s ou supprim�s.
Les directives fournies par mod_headers
peuvent
s'ins�rer presque partout dans la configuration du serveur, et on
peut limiter leur port�e en les pla�ant dans des sections de configuration.
La chronologie du traitement est importante et est affect�e par l'ordre d'apparition des directives dans le fichier de configuration et par leur placement dans les sections de configuration. Ainsi, ces deux directives ont un effet diff�rent si leur ordre est invers� :
RequestHeader append MirrorID "mirror 12" RequestHeader unset MirrorID
Dans cet ordre, l'en-t�te MirrorID
n'est pas d�fini.
Si l'ordre des directives �tait invers�, l'en-t�te
MirrorID
serait d�fini � "mirror 12".
mod_headers
peut agir soir pr�cocement, soit
tardivement au niveau de la requ�te. Le mode normal est le mode
tardif, lorsque les en-t�tes de requ�te sont d�finis, imm�diatement
avant l'ex�cution du g�n�rateur de contenu, et pour les en-t�tes de
r�ponse, juste au moment o� la r�ponse est envoy�e sur le r�seau.
Utilisez toujours le mode tardif sur un serveur en production.
Le mode pr�coce a �t� con�u � des fins d'aide aux tests et au
d�bogage pour les d�veloppeurs. Les directives d�finies en utilisant
le mot-cl� early
sont cens�es agir au tout d�but du
traitement de la requ�te. Cela signifie que l'on peut les utiliser
pour simuler diff�rentes requ�tes et d�finir des situations de test,
tout en gardant � l'esprit que les en-t�tes peuvent �tre modifi�s �
tout moment par d'autres modules avant que le r�ponse ne soit
g�n�r�e.
Comme les directives pr�coces sont trait�es avant que le
chemin de la requ�te ne soit parcouru, les en-t�tes
pr�coces ne peuvent �tre d�finis que dans un contexte de serveur
principal ou de serveur virtuel. Les directives pr�coces ne peuvent
pas d�pendre d'un chemin de requ�te, si bien qu'elles �choueront
dans des contextes tels que <Directory>
ou
<Location>
.
Header echo ^TS
mon-en-t�te
, qui
contient un horodatage permettant de d�terminer le moment o� la
requ�te a �t� re�ue, et le temps qui s'est �coul� jusqu'� ce que
la requ�te ait commenc� � �tre servie. Cet en-t�te peut �tre
utilis� par le client pour estimer la charge du serveur ou
isoler les goulets d'�tranglement entre le client et le
serveur.
Header set mon-en-t�te "%D %t"
le r�sultat est l'ajout � la r�ponse d'un en-t�te du type :
mon-en-t�te: D=3775428 t=991424704447256
Header set mon-en-t�te "Bonjour Joe. Il a fallu %D microsecondes \
� Apache pour servir cette requ�te."
le r�sultat est l'ajout � la r�ponse d'un en-t�te du type :
Header set MyHeader "Bonjour Joe. Il a fallu D=3775428 microsecondes � Apache pour servir cette requ�te."
mon-en-t�te
� la r�ponse si et
seulement si l'en-t�te mon-en-t�te-requ�te
est
pr�sent dans la requ�te. Ceci peut s'av�rer utile pour g�n�rer
des en-t�tes de r�ponse "� la t�te du client". Notez que cet
exemple n�cessite les services du module
mod_setenvif
.
SetEnvIf MyRequestHeader myvalue HAVE_MyRequestHeader Header set MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
Si l'en-t�te mon-en-t�te-requ�te: mavaleur
est
pr�sent dans la requ�te HTTP, la r�ponse contiendra un en-t�te
du type :
mon-en-t�te: D=3775428 t=991424704447256 montexte
RequestHeader edit Destination ^https: http: early
CGI
,
NO_CACHE
et NO_STORE
existent pour la
requ�te) :
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
alors, la r�ponse contiendra l'en-t�te suivant :
Cache-Control: no-cache, no-store
Si append
avait �t� utilis� � la place de
merge
, la r�ponse aurait contenu l'en-t�te suivant
:
Cache-Control: no-cache, no-cache, no-store
Header set Set-Cookie testcookie "expr=-z %{req:Cookie}"
Description: | Configure les en-t�tes d'une r�ponse HTTP |
---|---|
Syntaxe: | Header [condition] add|append|echo|edit|edit*|merge|set|unset|note
en-t�te [valeur] [remplacement]
[early|env=[!]variable]|expr=expression]
|
Contexte: | configuration du serveur, serveur virtuel, r�pertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Extension |
Module: | mod_headers |
Compatibilit�: | La condition par d�faut est temporairement pass�e � "always" dans les version 2.3.9 et 2.3.10 |
Cette directive permet de remplacer, fusionner, ou supprimer des en-t�tes de r�ponse HTTP. L'en-t�te est modifi� juste apr�s que le gestionnaire de contenu et les filtres en sortie ne s'ex�cutent, ce qui permet la modification des en-t�tes sortants.
L'argument optionnel condition permet de d�terminer
sur quelle table interne d'en-t�tes de r�ponses cette directive va
op�rer. D'autres composants du serveur peuvent avoir stock� leurs
en-t�tes de r�ponses dans la table correspondant �
onsuccess
ou dans celle correspondant �
always
. Dans ce contexte, "Always" fait r�f�rence au
choix d'envoyer les en-t�tes que vous ajoutez aux r�ponses, qu'elle
soient avec succ�s ou �chou�es ; par contre, si votre action est une
fonction d'un en-t�te existant, vous devrez lire la documentation de
mani�re plus approfondie car dans ce cas, les choses se compliquent.
Vous pouvez avoir � changer la valeur par d�faut
onsuccess
en always
dans des circonstances
similaires � celles expos�es plus loin. Notez aussi que la r�p�tition
de cette directive avec les deux conditions peut �tre pertinente
dans certains sc�narios, car always
n'englobe pas
onsuccess
en ce qui concerne les en-t�tes existants :
always
est utilis�e dans la r�ponse
d�finitive.always
et non dans la table par
d�faut.onsuccess
.L'action que cette directive provoque est d�termin�e par le premier argument (ou par le second argument si une condition est sp�cifi�e). Il peut prendre une des valeurs suivantes :
add
set
, append
ou merge
.append
echo
edit
edit*
edit
n'effectuera une
recherche/remplacement qu'une seule fois dans la valeur de
l'en-t�te, alors que la forme edit*
en effectuera autant
que le nombre d'apparition de la cha�ne � remplacer.merge
set
setifempty
unset
note
Cet argument est suivi d'un nom d'en-t�te qui peut se
terminer par un caract�re ':', mais ce n'est pas obligatoire. La
casse est ignor�e avec set
, append
,
merge
, add
, unset
et
edit
. Le nom d'en-t�te est sensible � la
casse pour echo
et peut �tre une expression rationnelle.
Avec set
, append
, merge
et
add
, une valeur est sp�cifi�e comme
argument suivant. Si valeur contient des espaces, elle
doit �tre entour�e de guillemets. valeur peut �tre une
cha�ne de caract�res, une cha�ne contenant des sp�cificateurs de
format, ou une combinaison des deux. valeur supporte les
sp�cificateurs de format suivants :
Format | Description |
---|---|
%% |
Le caract�re pourcentage |
%t |
Le moment de r�ception de la requ�te en temps
universel coordonn� depuis le temps epoch (Jan. 1, 1970) et
exprim� en microsecondes. La valeur est pr�c�d�e de
t= . |
%D |
Le temps �coul� entre la r�ception de la requ�te et l'envoi
des en-t�tes sur le r�seau. Il s'agit de la dur�e de traitement
de la requ�te. La valeur est pr�c�d�e de D= . La
valeur est exprim�e en microsecondes. |
%l |
La charge courante du serveur. Ce sont les valeurs fournies
par getloadavg() qui repr�sentent la charge
courante, ainsi que la charge moyenne pendant les cinq et les
quinze derni�res minutes. Chaque valeur est pr�c�d�e de
l= et s�par�e des autres par un slash
/ .
|
%i |
Le pourcentage de disponibilit� de httpd (0 � 100) bas� sur
le nombre de threads et de processus disponibles. La valeur est
pr�c�d�e de i= .
|
%b |
Le pourcentage d'utilisation de httpd (0 � 100) bas� sur
le nombre de threads et de processus disponibles. La valeur est
pr�c�d�e de b= .
|
%{NOM_VARIABLE}e |
Le contenu de la variable
d'environnement NOM_VARIABLE . |
%{NOM_VARIABLE}s |
Le contenu de la variable
d'environnement SSL NOM_VARIABLE , si
mod_ssl est activ�. |
Le sp�cificateur de format %s
est disponible
depuis la version 2.1 d'Apache ; il peut �tre utilis� � la place
de %e
pour �viter de devoir sp�cifier
SSLOptions +StdEnvVars
. Cependant, si
SSLOptions +StdEnvVars
doit tout de m�me �tre
sp�cifi� pour une raison quelconque, %e
sera plus
efficace que %s
.
edit
n�cessite les deux arguments
valeur, qui est une expression
rationnelle, et une cha�ne additionnelle
remplacement. Depuis la version 2.4.7, la cha�ne de
remplacement peut aussi contenir des sp�cificateurs de format.
La directive Header
peut �tre suivie d'un
argument additionnel qui peut prendre les valeurs suivantes :
early
env=[!]variable
variable
existe. Un !
devant
variable
inverse le test, et la directive ne
s'appliquera alors que si variable
n'est pas d�finie.expr=expression
Except� le cas du mode pr�coce, les
directives Header
sont trait�es juste avant
l'envoi de la r�ponse sur le r�seau. Cela signifie qu'il est
possible de d�finir et/ou modifier la plupart des en-t�tes, �
l'exception de ceux qui sont ajout�s par le filtre HTTP
d'en-t�te, comme Content-Type.
Description: | Configure les en-t�tes d'une requ�te HTTP |
---|---|
Syntaxe: | RequestHeader add|append|edit|edit*|merge|set|unset
en-t�te [valeur] [remplacement]
[early|env=[!]variable]|expr=expression]
|
Contexte: | configuration du serveur, serveur virtuel, r�pertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Extension |
Module: | mod_headers |
Cette directive permet de remplacer, fusionner, modifier ou supprimer des en-t�tes de requ�te HTTP. L'en-t�te est modifi� juste avant que le gestionnaire de contenu ne s'ex�cute, ce qui permet la modification des en-t�tes entrants. L'action effectu�e est d�termin�e par le premier argument. Ce dernier accepte les valeurs suivantes :
add
set
, append
ou merge
.append
edit*
edit
, la cha�ne de l'en-t�te correspondant au mod�le ne
sera recherch�e et remplac�e qu'une seule fois, alors qu'avec
edit*
, elle le sera pour chacune de ses instances si
elle appara�t plusieurs fois.merge
set
setifempty
unset
Cet argument est suivi d'un nom d'en-t�te qui peut se terminer
par un caract�re ':', mais ce n'est pas obligatoire. La casse est
ignor�e. Avec set
, append
,
merge
et add
, une valeur est
fournie en troisi�me argument. Si une valeur contient des
espaces, elle doit �tre entour�e de guillemets. Avec
unset
, aucune valeur ne doit appara�tre.
valeur peut �tre une cha�ne de caract�res, une cha�ne
contenant des sp�cificateurs de format, ou une combinaison des deux.
Les sp�cificateurs de format support�s sont les m�mes que ceux de la
directive Header
, �
laquelle vous pouvez vous reporter pour plus de d�tails. Avec
edit
, les deux arguments valeur et
remplacement sont obligatoires, et correspondent
respectivement � une expression
rationnelle et � une cha�ne de remplacement.
La directive RequestHeader
peut �tre
suivie d'un argument suppl�mentaire, qui pourra prendre les valeurs
suivantes :
early
env=[!]variable
variable
existe. Un !
devant
variable
inverse le test, et la directive ne
s'appliquera alors que si variable
n'est pas d�finie.expr=expression
Except� le cas du mode pr�coce, la directive
RequestHeader
est trait�e juste avant la
prise en compte de la requ�te par son gestionnaire, au cours de la
phase de v�rification. Ceci permet la modification des en-t�tes
g�n�r�s par le navigateur, ou par les filtres en entr�e
d'Apache.