Types MIME

MIME signifie Multipurpose Internet Mail Extensions, c’est un standard défini par l’IETF ( Internet Engineering Task Force ) pour le courrier électronique, mais il a été reformulé pour le Web. Apache utilise le module mod_mime.c, qui lui est intégré par défaut, pour connaître le type d’un fichier à partir de son extension. Les types MIME sont plus sophistiqués que les extensions de fichier ; ils sont classés en catégories (comme « text », « image » ou « application ») et disposent d’un identificateur unique au sein de leur catégorie. Non seulement ils précisent le type d’un fichier, mais ils permettent également de spécifier des informations supplémentaires, comme l’encodage utilisé pour représenter les caractères.

Le « type » d’un fichier envoyé est précisé par un en-tête situé au début des données. Ainsi :

content-type: text/html

indique que ce qui suit doit être traité comme du HTML, bien qu’il puisse également être considéré comme du texte. Si le type avait été « image/jpg », le navigateur aurait utilisé un code totalement différent pour restituer ces données.

C’est Apache qui insère automatiquement cet en-tête en fonction du type MIME ; comme il est absorbé par le navigateur, vous ne le voyez pas si vous cliquez avec le bouton droit de votre souris dans une fenêtre contenant une page web et que vous choisissez « Afficher la source » (MSIE) ou équivalent. Quoi qu’il en soit, c’est un élément capital d’une page web.

La liste des types MIME qu’Apache connaît déjà se trouve dans le fichier .conf/mime.types, mais vous pouvez également la consulter sur la page http://www.isi.edu/in-notes/iana/assignments/media-types/media-types. Vous pouvez modifier la liste du serveur pour lui ajouter de nouveaux types, ou utiliser les directives que nous allons présenter. Si vous modifiez son emplacement par défaut, .conf/, vous devrez indiquer le nouveau à l’aide de la directive TypesConfig.

Changer l’encodage d’un fichier avec l’une de ces directives ne modifie pas la valeur de l’en-tête Last-Modified : les copies en cache avec l’ancienne étiquette peuvent donc subsister après ces modifications (les serveurs envoient souvent un en-tête Last-Modified contenant la date et l’heure auxquelles le contenu a été modifié pour la dernière fois, afin que le navigateur puisse utiliser ce qu’il a dans son cache s’il est toujours d’actualité). Les fichiers peuvent avoir plusieurs extensions et leur ordre n’a généralement pas d’importance. Si l’extension .fr correspond au français et que .html correspond à du HTML, les fichiers texte.fr.html et texte.html.fr seront traités de la même façon. Cependant, toute extension non reconnue, .xyz par exemple, supprime toutes les extensions situées à sa gauche : texte.fr.xyz.html serait donc traité comme du HTML, mais pas comme du français.

TypesConfig

TypesConfig fichier

Valeur par défaut : conf/mime.types

La directive TypesConfig précise l’emplacement du fichier contenant la liste des types MIME. fichier est un chemin relatif à ServerRoot. Ce fichier configure la liste par défaut des correspondances entre extensions de fichiers et types de contenu : il est déconseillé de le modifier sauf si vous savez ce que vous faites. Si vous devez ajouter de nouveaux types, utilisez plutôt la directive AddType. Cette liste est formée de lignes ayant le même format que celui utilisé par AddType :

MIME-type extension extension ...

Les extensions sont en minuscules. Les lignes blanches et celles commençant par un dièse ( # ) sont ignorées.

AddType

AddType type-MIME extension [extension] ...

Configuration du serveur, hôte virtuel, répertoire, .htaccess

La directive AddType fait correspondre les extensions de fichiers indiquées au type de contenu type-MIME. Cette correspondance est ajoutée à celles en cours et surcharge une éventuelle association existant déjà pour la même extension. Cette directive permet d’ajouter des correspondances qui ne seraient pas présentes dans le fichier des types MIME (voir la directive TypesConfig. Exemple :

AddType image/gif .gif

Il est conseillé d’ajouter les nouveaux types MIME avec cette directive plutôt que de modifier le fichier TypesConfig.

À la différence du serveur du NCSA, cette directive ne peut pas servir à fixer le type de fichiers particuliers.

Les extensions indiquées ne sont pas sensibles à la casse et peuvent ou non être préfixées d’un point.

DefaultType

DefaultType type-MIME

Utilisable dans tous les contextes

Le serveur doit informer le client du type de contenu du document : si ce type est inconnu, il utilisera celui indiqué par la directive DefaultType. Ainsi :

DefaultType image/gif

conviendrait pour un répertoire contenant de nombreuses images GIF dont les noms de fichiers sont dépourvus d’extension .gif. Cette directive n’est utilisée que pour les fichiers qui, sinon, n’auraient pas de type.

ForceType

ForceType type-MIME

Répertoire, .htaccess

Les fichiers contenus dans un répertoire particulier seront envoyés avec le type MIME spécifié par ForceType. Vous pourriez, par exemple, avoir un ensemble de fichiers GIF dans le répertoire .repgifs mais, pour une raison ou une autre, leur avoir donné l’extension .gf2. En ce cas, vous pourriez ajouter ceci dans votre fichier de configuration :

<Directory <path>/repgifs>

ForceType image/gif

</Directory>

Utilisez cette directive avec précaution car elle peut donner des résultats inattendus : elle surcharge toujours le type MIME lié à l’extension d’un fichier -- même les fichiers .html de ce répertoire, par exemple, seraient envoyés comme étant de type image/gif.

RemoveType

RemoveType extension [extension] ...

Répertoire, .htaccess

Disponible à partir de Apache 1.3.13

La directive RemoveType supprime les associations pour les fichiers ayant les extensions indiquées. Cela permet aux fichiers .htaccess des sous-répertoires d’annuler des associations héritées des répertoires parents ou des fichiers de configuration du serveur. On pourrait, par exemple, ajouter cette ligne dans le fichier /truc/.htaccess :

RemoveType .cgi

Ce qui supprimerait le traitement spécial des fichiers .cgi dans toute l’arborescence de racine /truc/. Ces fichiers seraient alors considérés comme étant du type par défaut.

Les directives RemoveType sont traitées après les directives AddType : elles peuvent donc annuler les effets de ces dernières si elles agissent toutes deux dans le même répertoire.

Les extensions fournies en paramètre sont insensibles à la casse et peuvent, ou non, être préfixées d’un point.

AddEncoding

AddEncoding enc-MIME extension extension

Utilisable dans tous les contextes

La directive AddEncoding fait correspondre des extensions de fichier à l’encodage MIME indiqué, enc-MIME. Cette association est ajoutée à celles déjà en vigueur et surcharge les éventuelles associations en cours pour les extensions concernées. Les lignes suivantes :

AddEncoding x-gzip .gz

AddEncoding x-compress .Z

feront que les fichiers portant l’extension .gz seront considérés comme encodées avec x-gzip et ceux portant l’extension .Z comme utilisant l’encodage x-compress.

Les plus anciens clients exigent x-gzip et x-compress, mais le standard stipule qu’ils sont équivalents, respectivement, à gzip et à compress (Apache effectue les comparaisons d’encodage en ignorant les éventuels préfixes x- ). Lorsqu’il envoie une réponse encodée, Apache utilise la forme demandée par le client ( x-truc ou truc ) ; si le client n’a pas demandé de forme spécifique, Apache utilise celle indiquée par la directive AddEncoding. Pour résumer, utilisez toujours x-gzip et x-compress pour ces deux encodages ; les encodages plus récents, comme deflate, doivent être indiqués sans le x-.

Les extensions fournies en paramètre sont insensibles à la casse et peuvent, ou non, être préfixées d’un point.

RemoveEncoding

RemoveEncoding extension [extension] ...

Répertoire, .htaccess

Cette directive n’est disponible qu’à partir d’Apache 1.3.13

La directive RemoveEncoding supprime les associations d’encodages pour les fichiers qui ont les extensions indiquées. Cela permet aux fichiers .htaccess des sous-répertoires d’annuler les associations héritées des répertoires parents ou de la configuration du serveur. Les lignes suivantes, placées dans /truc/.htaccess :

AddEncoding x-gzip .gz

AddType text/plain .asc

<Files *.gz.asc>

RemoveEncoding .gz

</Files>

marqueront truc.gz comme étant encodé avec la méthode gzip, tandis que truc.gz.asc sera considéré comme un fichier texte non encodé. Ce dernier pourrait être, par exemple, un hachage d’un fichier binaire permettant de contrôler les modifications illicites.

Les directives RemoveEncoding sont traitées après les directives AddEncoding : elles peuvent donc annuler les effets de ces dernières si elles s’appliquent toutes les deux sur le même répertoire.

Les extensions fournies en paramètre sont insensibles à la casse et peuvent, ou non, être préfixées d’un point.

AddDefaultCharset

AddDefaultCharset On|Off|charset

Cette directive n’est disponible qu’à partir d’Apache 1.3.12

Cette directive précise le nom du jeu de caractères qui sera ajouté à toute réponse n’ayant pas d’en-tête concernant le type de son contenu. Cela surchargera un éventuel jeu de caractères qui aurait pu être spécifié dans le corps du document à l’aide d’un marqueur META. La valeur Off désactive cette fonctionnalité, tandis que On active le jeu de caractères interne d’Apache, iso-8859-1. Vous pouvez également préciser un autre jeu de caractères : AddDefaultCharset utf-8, par exemple.

L’utilisation de AddDefaultCharset joue un rôle important dans la prévention des attaques XSS ( Cross-Site Scripting ), qui sont détaillées sur la page http://www.idefense.com/XSS.html.

AddCharset

AddCharset charset extension [extension] ...

Configuration du serveur, Répertoire, .htaccess

Cette directive n’est disponible qu’à partir d’Apache 1.3.10

La directive AddCharset associe les extensions indiquées au jeu de caractères MIME charset. Cette association est ajoutée à celles qui existent déjà et surcharge celles qui s’appliquent déjà aux extensions concernées. Avec les lignes suivantes, par exemple :

AddLanguage ja .ja

AddCharset EUC-JP .euc

AddCharset ISO-2022-JP .jis

AddCharset SHIFT_JIS .sjis

le fichier xxxx.ja.jis sera traité comme un document japonais utilisant le jeu de caractères ISO-2022-JP (ce serait également le cas pour le fichier xxxx.jis.ja ). Cette directive permet d’informer le client sur l’encodage des caractères du document pour qu’il puisse être correctement interprété et affiché ; elle sert également pendant la négociation du contenu, où le serveur renvoie un seul document parmi plusieurs en fonction du jeu de caractères préféré du client.

Les extensions fournies en paramètre sont insensibles à la casse et peuvent, ou non, être préfixées d’un point.

RemoveCharset Directive

RemoveCharset extension [extension]

Répertoire, .htaccess

Cette directive n’est disponible qu’à partir d’Apache 2.0.24

La directive RemoveCharset supprime toutes les associations de jeux de caractères aux fichiers ayant les extensions indiquées. Cela permet aux fichiers .htaccess des sous-répertoires d’annuler les associations héritées des répertoires parents ou de la configuration du serveur.

Les extensions fournies en paramètre sont insensibles à la casse et peuvent, ou non, être préfixées d’un point.

AddHandler

AddHandler nom-handler extension1 extension2 ...

Configuration du serveur, hôte virtuel, .htaccess

La directive AddHandler réveille le handler nom-handler existant et lui associe les extensions indiquées. Vous pourriez, par exemple, ajouter cette ligne dans votre fichier de configuration :

AddHandler cgi-script cgi bzq

pour que tout fichier ayant l’extension .cgi ou .bzq soit considéré comme un script CGI exécutable.

SetHandler

SetHandler nom-handler

Répertoire, .htaccess, section Location

Cette directive fait la même chose que AddHandler mais applique la transformation indiquée par nom-handler à tous les fichiers de la section <Directory>, <Location>, ou <Files> dans laquelle elle se trouve, ou dans le répertoire du fichier .htaccess. Dans le chapitre 10, par exemple, on utilise :

<Location /status>

<Limit get>

order deny,

allow allow from 192.168.123.1

deny from all

</Limit>

SetHandler server-status

</Location>

RemoveHandler

RemoveHandler extension [extension] ...

Répertoire, .htaccess

Cette directive n’est disponible qu’à partir d’Apache 1.3.14

La directive RemoveHandler supprime toutes les associations de handler aux fichiers ayant les extensions indiquées. Cela permet aux fichiers .htaccess des sous-répertoires d’annuler les associations héritées des répertoires parents ou de la configuration du serveur. Les lignes suivantes, par exemple :

/truc/.htaccess: AddHandler server-parsed .html /truc/machin/.htaccess: RemoveHandler .html

font que les fichiers .html du répertoire /truc/machin/ seront traités comme des fichiers normaux, plutôt que comme des candidats à un traitement sur le serveur (voir le module mod_include ).

Les extensions en paramètre sont insensibles à la casse et peuvent, ou non, être préfixées d’un point.

AcceptFilter

AcceptFilter on|off

Valeur par défaut : on

Configuration du serveur

Cette directive n’est disponible qu’à partir d’Apache 1.3.22

AcceptFilter contrôle un filtre spécifique à BSD. Cette directive est intégrée par défaut au serveur et activée si votre système la supporte -option SO_ACCEPTFILTER de setsocketopt(). Actuellement, seul FreeBSD la supporte.

Voir la page http://httpd.apache.org/docs/misc/perf-bsd44.html pour plus d’informations.

L’option de compilation AP_ACCEPTFILTER_OFF permet de mettre la valeur par défaut à off. Par ailleurs, httpd -V et httpd -L permettent de consulter les valeurs par défaut et de savoir si SO_ACCEPTFILTER a été définie à la compilation.

Apache La référence
titlepage.xhtml
APACHE-la-REF_split_000.htm
APACHE-la-REF_split_001.htm
APACHE-la-REF_split_002.htm
APACHE-la-REF_split_003.htm
APACHE-la-REF_split_004.htm
APACHE-la-REF_split_005.htm
APACHE-la-REF_split_006.htm
APACHE-la-REF_split_007.htm
APACHE-la-REF_split_008.htm
APACHE-la-REF_split_009.htm
APACHE-la-REF_split_010.htm
APACHE-la-REF_split_011.htm
APACHE-la-REF_split_012.htm
APACHE-la-REF_split_013.htm
APACHE-la-REF_split_014.htm
APACHE-la-REF_split_015.htm
APACHE-la-REF_split_016.htm
APACHE-la-REF_split_017.htm
APACHE-la-REF_split_018.htm
APACHE-la-REF_split_019.htm
APACHE-la-REF_split_020.htm
APACHE-la-REF_split_021.htm
APACHE-la-REF_split_022.htm
APACHE-la-REF_split_023.htm
APACHE-la-REF_split_024.htm
APACHE-la-REF_split_025.htm
APACHE-la-REF_split_026.htm
APACHE-la-REF_split_027.htm
APACHE-la-REF_split_028.htm
APACHE-la-REF_split_029.htm
APACHE-la-REF_split_030.htm
APACHE-la-REF_split_031.htm
APACHE-la-REF_split_032.htm
APACHE-la-REF_split_033.htm
APACHE-la-REF_split_034.htm
APACHE-la-REF_split_035.htm
APACHE-la-REF_split_036.htm
APACHE-la-REF_split_037.htm
APACHE-la-REF_split_038.htm
APACHE-la-REF_split_039.htm
APACHE-la-REF_split_040.htm
APACHE-la-REF_split_041.htm
APACHE-la-REF_split_042.htm
APACHE-la-REF_split_043.htm
APACHE-la-REF_split_044.htm
APACHE-la-REF_split_045.htm
APACHE-la-REF_split_046.htm
APACHE-la-REF_split_047.htm
APACHE-la-REF_split_048.htm
APACHE-la-REF_split_049.htm
APACHE-la-REF_split_050.htm
APACHE-la-REF_split_051.htm
APACHE-la-REF_split_052.htm
APACHE-la-REF_split_053.htm
APACHE-la-REF_split_054.htm
APACHE-la-REF_split_055.htm
APACHE-la-REF_split_056.htm
APACHE-la-REF_split_057.htm
APACHE-la-REF_split_058.htm
APACHE-la-REF_split_059.htm
APACHE-la-REF_split_060.htm
APACHE-la-REF_split_061.htm
APACHE-la-REF_split_062.htm
APACHE-la-REF_split_063.htm
APACHE-la-REF_split_064.htm
APACHE-la-REF_split_065.htm
APACHE-la-REF_split_066.htm
APACHE-la-REF_split_067.htm
APACHE-la-REF_split_068.htm
APACHE-la-REF_split_069.htm
APACHE-la-REF_split_070.htm
APACHE-la-REF_split_071.htm
APACHE-la-REF_split_072.htm
APACHE-la-REF_split_073.htm
APACHE-la-REF_split_074.htm
APACHE-la-REF_split_075.htm
APACHE-la-REF_split_076.htm
APACHE-la-REF_split_077.htm
APACHE-la-REF_split_078.htm
APACHE-la-REF_split_079.htm
APACHE-la-REF_split_080.htm
APACHE-la-REF_split_081.htm
APACHE-la-REF_split_082.htm
APACHE-la-REF_split_083.htm
APACHE-la-REF_split_084.htm
APACHE-la-REF_split_085.htm
APACHE-la-REF_split_086.htm
APACHE-la-REF_split_087.htm
APACHE-la-REF_split_088.htm
APACHE-la-REF_split_089.htm
APACHE-la-REF_split_090.htm
APACHE-la-REF_split_091.htm
APACHE-la-REF_split_092.htm
APACHE-la-REF_split_093.htm
APACHE-la-REF_split_094.htm
APACHE-la-REF_split_095.htm
APACHE-la-REF_split_096.htm
APACHE-la-REF_split_097.htm
APACHE-la-REF_split_098.htm
APACHE-la-REF_split_099.htm
APACHE-la-REF_split_100.htm
APACHE-la-REF_split_101.htm
APACHE-la-REF_split_102.htm
APACHE-la-REF_split_103.htm
APACHE-la-REF_split_104.htm
APACHE-la-REF_split_105.htm
APACHE-la-REF_split_106.htm
APACHE-la-REF_split_107.htm
APACHE-la-REF_split_108.htm
APACHE-la-REF_split_109.htm
APACHE-la-REF_split_110.htm
APACHE-la-REF_split_111.htm
APACHE-la-REF_split_112.htm
APACHE-la-REF_split_113.htm
APACHE-la-REF_split_114.htm
APACHE-la-REF_split_115.htm
APACHE-la-REF_split_116.htm
APACHE-la-REF_split_117.htm
APACHE-la-REF_split_118.htm
APACHE-la-REF_split_119.htm
APACHE-la-REF_split_120.htm
APACHE-la-REF_split_121.htm
APACHE-la-REF_split_122.htm
APACHE-la-REF_split_123.htm
APACHE-la-REF_split_124.htm
APACHE-la-REF_split_125.htm
APACHE-la-REF_split_126.htm
APACHE-la-REF_split_127.htm
APACHE-la-REF_split_128.htm
APACHE-la-REF_split_129.htm
APACHE-la-REF_split_130.htm
APACHE-la-REF_split_131.htm
APACHE-la-REF_split_132.htm
APACHE-la-REF_split_133.htm
APACHE-la-REF_split_134.htm
APACHE-la-REF_split_135.htm
APACHE-la-REF_split_136.htm
APACHE-la-REF_split_137.htm
APACHE-la-REF_split_138.htm
APACHE-la-REF_split_139.htm
APACHE-la-REF_split_140.htm
APACHE-la-REF_split_141.htm
APACHE-la-REF_split_142.htm
APACHE-la-REF_split_143.htm
APACHE-la-REF_split_144.htm
APACHE-la-REF_split_145.htm
APACHE-la-REF_split_146.htm
APACHE-la-REF_split_147.htm
APACHE-la-REF_split_148.htm
APACHE-la-REF_split_149.htm
APACHE-la-REF_split_150.htm
APACHE-la-REF_split_151.htm
APACHE-la-REF_split_152.htm
APACHE-la-REF_split_153.htm
APACHE-la-REF_split_154.htm
APACHE-la-REF_split_155.htm
APACHE-la-REF_split_156.htm
APACHE-la-REF_split_157.htm
APACHE-la-REF_split_158.htm
APACHE-la-REF_split_159.htm
APACHE-la-REF_split_160.htm
APACHE-la-REF_split_161.htm
APACHE-la-REF_split_162.htm
APACHE-la-REF_split_163.htm
APACHE-la-REF_split_164.htm
APACHE-la-REF_split_165.htm
APACHE-la-REF_split_166.htm
APACHE-la-REF_split_167.htm
APACHE-la-REF_split_168.htm
APACHE-la-REF_split_169.htm
APACHE-la-REF_split_170.htm
APACHE-la-REF_split_171.htm
APACHE-la-REF_split_172.htm
APACHE-la-REF_split_173.htm
APACHE-la-REF_split_174.htm