| <?xml version="1.0" ?> |
| <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> |
| <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?> |
| <!-- French translation : Lucien GENTIS --> |
| <!-- Reviewed by : Vincent Deffontaines --> |
| <!-- English Revision: 1562488 --> |
| |
| <!-- |
| 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="filter.xml.meta"> |
| |
| <title>Filtres</title> |
| |
| <summary> |
| <p>Ce document décrit l'utilisation des filtres avec Apache.</p> |
| </summary> |
| |
| <section id="intro"> |
| <title>Le filtrage avec Apache 2</title> |
| <related> |
| <modulelist> |
| <module>mod_filter</module> |
| <module>mod_deflate</module> |
| <module>mod_ext_filter</module> |
| <module>mod_include</module> |
| <module>mod_charset_lite</module> |
| <module>mod_reflector</module> |
| <module>mod_buffer</module> |
| <module>mod_data</module> |
| <module>mod_ratelimit</module> |
| <module>mod_reqtimeout</module> |
| <module>mod_request</module> |
| <module>mod_sed</module> |
| <module>mod_substitute</module> |
| <module>mod_xml2enc</module> |
| <module>mod_proxy_html</module> |
| </modulelist> |
| <directivelist> |
| <directive module="mod_filter">FilterChain</directive> |
| <directive module="mod_filter">FilterDeclare</directive> |
| <directive module="mod_filter">FilterProtocol</directive> |
| <directive module="mod_filter">FilterProvider</directive> |
| <directive module="mod_mime">AddInputFilter</directive> |
| <directive module="mod_mime">AddOutputFilter</directive> |
| <directive module="mod_mime">RemoveInputFilter</directive> |
| <directive module="mod_mime">RemoveOutputFilter</directive> |
| <directive module="mod_reflector">ReflectorHeader</directive> |
| <directive module="mod_ext_filter">ExtFilterDefine</directive> |
| <directive module="mod_ext_filter">ExtFilterOptions</directive> |
| <directive module="core">SetInputFilter</directive> |
| <directive module="core">SetOutputFilter</directive> |
| </directivelist> |
| </related> |
| |
| <p>La chaîne de filtrage est disponible depuis la version 2.0 d'Apache, |
| et permet aux applications de traiter les données en entrée et en sortie |
| d'une manière hautement flexible et configurable, quelle que soit la |
| provenance de ces données. Il est possible de pré-traiter les données |
| en entrée, et post-traiter les données en sortie, selon |
| vos souhaits. |
| Ces traitements sont tout à fait indépendants des traditionnelles phases |
| de traitement des requêtes.</p> |
| <p class="figure"> |
| <img src="images/filter_arch.png" width="569" height="392" alt= |
| "les filtres peuvent s'enchaîner, perpendiculairement au traitement |
| des requêtes" |
| /> |
| </p> |
| <p>Voici quelques exemples de filtrage avec la distribution standard d'Apache:</p> |
| <ul> |
| <li><module>mod_include</module>, implémente les inclusions côté serveur.</li> |
| <li><module>mod_ssl</module>, implémente le cryptage SSL (https).</li> |
| <li><module>mod_deflate</module>, implémente la compression/décompression |
| à la volée.</li> |
| <li><module>mod_charset_lite</module>, transcodage entre différents |
| jeux de caractères.</li> |
| <li><module>mod_ext_filter</module>, utilisation d'un programme externe |
| comme filtre.</li> |
| </ul> |
| <p>Apache utilise aussi plusieurs filtres en interne pour accomplir des tâches |
| comme le découpage des grosses requêtes (chunking) et la gestion des |
| requêtes portant sur une partie d'un fichier (byte-range).</p> |
| |
| <p>Un grand choix d'applications sont implémentées par des modules de filtrage |
| tiers disponibles à <a |
| href="http://modules.apache.org/">modules.apache.org</a> entre autres. |
| En voici quelques exemples :</p> |
| |
| <ul> |
| <li>Traitement et réécriture HTML et XML</li> |
| <li>Transformations XSLT et inclusions XML (XIncludes)</li> |
| <li>Support de l'espace de nommage XML</li> |
| <li>Gestion du chargement de fichier et décodage des formulaires HTML</li> |
| <li>Traitement d'image</li> |
| <li>Protection des applications vulnérables comme les scripts PHP</li> |
| <li>Edition de texte par Chercher/Remplacer</li> |
| </ul> |
| </section> |
| |
| <section id="smart"> |
| <title>Filtrage intelligent</title> |
| <p class="figure"> |
| <img src="images/mod_filter_new.png" width="423" height="331" |
| alt="Le filtrage intelligent applique différents fournisseurs de filtrage en |
| fonction de l'état du traitement de la requête"/> |
| </p> |
| <p><module>mod_filter</module>, inclus dans les version 2.1 et supérieures |
| d'Apache, permet de configurer la chaîne de filtrage dynamiquement |
| à l'exécution. |
| Ainsi par exemple, vous pouvez définir un proxy pour réécrire du code HTML |
| avec un filtre HTML et traiter des images JPEG avec un filtre totalement |
| séparé, bien que le proxy ne possède aucune information préliminaire |
| sur ce que le serveur à l'origine des données à filtrer va envoyer. |
| Ceci fonctionne grâce à l'utilisation d'un gestionnaire de filtre, |
| qui distribue les tâches à différents fournisseurs de filtrage en fonction |
| du contenu réel à filtrer à l'exécution. Tout filtre peut se voir soit |
| inséré directement dans la chaîne et lancé inconditionnellement, soit |
| utilisé comme un fournisseur de filtrage et inséré dynamiquement. |
| Par exemple,</p> |
| <ul> |
| <li>un filtre de traitement HTML sera lancé uniquement si le contenu est |
| de type text/html ou application/xhtml+xml</li> |
| <li>Un filtre de compression sera lancé uniquement si les données en entrée |
| sont de type compressible et non déjà compressées</li> |
| <li>Un filtre de conversion de jeux de caractères ne sera inséré que si |
| le document texte n'est pas déjà dans le jeu de caractères voulu</li> |
| </ul> |
| </section> |
| |
| <section id="service"> |
| |
| <title>Présentation des filtres en tant que service HTTP</title> |
| <p>Les filtres permettent de traiter les requêtes des clients avant |
| traitement par le serveur, ainsi que les contenus issus du serveur avant de les renvoyer |
| au client. Le module <module>mod_reflector</module> permet aussi |
| d'utiliser les filtres pour traiter les requêtes des clients avant de |
| les renvoyer directement à ces derniers.</p> |
| |
| <p>Le module <module>mod_reflector</module> reçoit les requêtes POST des |
| clients, et en répercute le corps dans la requête POST constituant la |
| réponse, lors de l'envoi de cette dernière au client en passant à travers la |
| pile de filtres en sortie.</p> |
| |
| <p>Cette technique peut être utilisée comme alternative à un service web |
| s'exécutant à l'intérieur de la pile d'un serveur d'applications, où un |
| filtre en sortie effectue la transformation requise sur le corps de la |
| requête. Par exemple, on peut utiliser le module |
| <module>mod_deflate</module> pour fournir un service général de |
| compression ; un filtre de transformation d'images peut aussi se voir |
| mué en service de transformation d'images.</p> |
| |
| </section> |
| |
| |
| <section id="using"> |
| <title>Utilisation des filtres</title> |
| <p>Il y a deux manières d'utiliser le filtrage : Simple et Dynamique. |
| En général, vous utiliserez l'une ou l'autre méthode; le mélange des deux |
| peut avoir des conséquences inattendues (bien que le filtrage simple en entrée |
| puisse être associé sans problème avec le filtrage simple ou dynamique |
| en sortie).</p> |
| <p>La méthode Simple est la seule permettant de configurer les filtres |
| en entrée, et suffit pour les filtres en sortie pour lesquels vous avez besoin |
| d'une chaîne de filtres statique. |
| Les directives correspondantes sont |
| <directive module="core">SetInputFilter</directive>, |
| <directive module="core">SetOutputFilter</directive>, |
| <directive module="mod_mime">AddInputFilter</directive>, |
| <directive module="mod_mime">AddOutputFilter</directive>, |
| <directive module="mod_mime">RemoveInputFilter</directive>, et |
| <directive module="mod_mime">RemoveOutputFilter</directive>.</p> |
| |
| <p>La méthode Dynamique permet une configuration dynamique des filtres en |
| sortie à la fois statique et flexible, comme discuté dans la page |
| <module>mod_filter</module>. |
| Les directives correspondantes sont |
| <directive module="mod_filter">FilterChain</directive>, |
| <directive module="mod_filter">FilterDeclare</directive>, et |
| <directive module="mod_filter">FilterProvider</directive>.</p> |
| |
| <p>Une autre directive <directive |
| module="mod_filter">AddOutputFilterByType</directive> est encore supportée, |
| mais obsolète. Utilisez la |
| configuration dynamique à la place.</p> |
| |
| </section> |
| </manualpage> |