Le protocole HTTP recommande aux clients d'être "indulgents pour ce qu'ils doivent accepter", et aux serveurs d'être "stricts pour ce qu'ils envoient". Dans certains cas, il peut s'avérer difficile de déterminer si un serveur ou une application a été mal configuré, sert un contenu qui ne peut pas être mis en cache ou se comporte de manière non optimale, car le client HTTP est souvent en mesure de compenser les défauts du serveur. Ces problèmes peuvent induire une consommation de bande passante excessive, ou même une interruption de service suite à une charge trop importante du serveur.
Le module
Il devient ainsi possible de définir des critères de conformité minimale au protocole HTTP pour développer des applications sans problème. En outre, il est possible de configurer un mandataire inverse ou un cache pour qu'il se protège lui-même contre les serveurs d'origine mal configurés ou les contenus indument impossible à être mis en cache, ou un mécanisme qui détecte les erreurs de configuration au sein du serveur lui-même.
Si une règle est violée, il possible d'effectuer les actions suivantes :
Warning
ajouté à la réponse en tant qu'information à destination du client.Warning
header added to the response, and a 502
Bad Gateway
will be returned to the client. Optional links to
explanatory documentation can be added to each error message,
detailing the origin of each policy.Il est aussi possible de désactiver toutes les règles pour un
espace d'URL donné, si le besoin s'en fait sentir, via la directive
En outre, la directive
Les filtres suivants sont disponibles :
304 Not Modified
ou 412 Precondition
Failed
. Il arrive q'un serveur ignore les en-têtes
conditionnels, et cela diminue l'efficacité du mécanisme de mise en
cache HTTP. Ce filtre rejète les requêtes lorsqu'un en-tête
conditionnel était présent, et une réponse 2xx a été renvoyée au
lieu de la réponse 304 ou 412 attendue.Cache-Control: no-cache
Pragma: no-cache
Cache-Control: no-store
Cache-Control: private
s-maxage
est présent mais d'une valeur trop
faible; oumax-age
est présent mais d'une valeur trop
faible; ouExpires
est présent et invalide; ouDate
est présent et invalide; ouExpires
moins Date est trop faible ; ous-maxage
, maxage
, ou
Expires
/Date
n'est présentHTTP/1.1
HTTP/1.0
HTTP/0.9
Voici un exemple de configuration qui protège un serveur qui délivre du contenu statique :
Commutateur principal qui permet d'activer ou de désactiver le filtrage pour un espace d'URL donné.
Limite l'action des règles à la journalisation ou les désactive totalement en fonction de la présence d'une variable d'environnement. Si la variable spécifiée est présente et égale à la valeur de l'argument log-value, les erreurs rencontrées par les filtres ne seront que journalisées. Si la variable spécifiée est présente et égale à la valeur de l'argument ignore-value, toutes les règles seront ignorées.
Avec l'argument enforce, une réponse qui aurait du être conditionnelle mais ne l'est pas sera rejetée.
Cette directive permet de spécifier l'URL de la documentation décrivant la politique de filtrage des requêtes conditionnelles ; elle apparaîtra dans les messages d'erreur.
Avec l'argument enforce, une réponse qui ne contient pas
d'en-tête Content-Length
sera rejetée.
Cette directive permet de spécifier l'URL contenant la documentation décrivant la politique de filtrage de la spécification de la longueur du contenu ; elle apparaîtra dans les messages d'erreur.
Avec l'argument enforce, une réponse qui ne contient ni en-tête
Content-Length
, ni en-tête
Transfer-Encoding
de valeur chunked
sera
rejetée.
Cette directive permet de spécifier l'URL contenant la description de la politique de persistance ; elle apparaîtra dans les messages d'erreur.
Avec l'argument enforce, une réponse qui ne contient pas
d'en-tête Content-Type
, ou dont l'en-tête
Content-Type
est mal formé, ou dont l'en-tête
Content-Type
contient une valeur qui ne correspond pas
au(x) modèle(s) spécifié(s) sera rejetée.
Cette directive permet de spécifier l'URL contenant la description de la politique des types de contenu ; elle apparaîtra dans les messages d'erreur.
Avec l'argument enforce, une réponse dont l'en-tête
Vary
contient un des en-têtes spécifiés sera rejetée.
Cette directive permet de spécifier l'URL contenant la description de la politique de filtrage de l'en-tête Vary ; elle apparaîtra dans les messages d'erreur.
Avec l'argument enforce, une réponse qui ne contient ni en-tête
ETag
valide, ni en-tête Last-Modified
, ou
dont la syntaxe d'un de ces deux en-têtes est incorrecte sera
rejetée.
Cette directive permet de spécifier l'URL contenant la description de la politique de filtrage de la validation du contenu ; elle apparaîtra dans les messages d'erreur.
Avec l'argument enforce, une réponse qui se définit elle-même
comme impossible à mettre en cache via l'en-tête
Cache-Control
ou Pragma
sera rejetée.
Cette directive permet de spécifier l'URL contenant la description de la politique de filtrage des réponses qui se définissent elles-mêmes comme impossibles à mettre en cache ; elle apparaîtra dans les messages d'erreur.
Avec l'argument enforce, une réponse dont la durée de vie n'est
pas explicitement spécifiée via un en-tête max-age
,
s-maxage
ou Expires
, ou dont la durée de
vie est inférieure à la valeur donnée sera rejetée.
Cette directive permet de spécifier l'URL contenant la description de la politique de filtrage des réponses en fonction de leur durée de vie ; elle apparaîtra dans les messages d'erreur.
Avec l'argument enforce, une requête dont le numéro de version HTTP est inférieur à la valeur spécifiée sera rejetée.
Cette directive permet de spécifier l'URL contenant la description de la politique de filtrage des requêtes en fonction du numéro de version HTTP ; elle apparaîtra dans les messages d'erreur.