Plugins, type MIME et navigateurs


Pour obtenir des résultats prévisibles, il convient de comprendre comment interagissent les informations sur lesquelles le navigateur se base pour reconnaître le media, en sachant que certaines peuvent être absentes ou erronées:

Détermination du type MIME par le navigateur

Le type MIME (RFC1341) joue le même rôle, sur Internet, que l'extension de nom de fichier dans un système d'exploitation. Par exemple, un document HTML est d'extension .htm dans un système, .html dans un autre, et de type MIME text/html sur Internet.

Client et serveur, gérés par des systèmes d'exploitation différents, disposent chacun de leur côté, d'une table de correspondance. Rien ne garantit que tables client et serveur soient concordantes.

Le serveur HTTP examine l'extension du fichier demandé, consulte sa table, y trouve le type MIME qu'il annonce dans l'en-tête HTTP. Exemple: index.html => text/html

Le client (navigateur) reçoit donc deux informations sur le type de données reçues : extension et type MIME. Lorsque le type MIME est absent, le navigateur examine l'extension, consulte sa table et en déduit le type MIME. Lorsque les deux informations sont présentes, la stratégie dépend du navigateur. Quelquefois, cette stratégie est au choix de l'utilisateur. Exemple: Opera.

Lorsque le type MIME annoncé par le serveur et l'extension de nom son discordantes, le résultat dépendra de la stratégie du navigateur et le résultat est imprévisible (cf. section suivante).

La table MIME des plugins

Lorsque le navigateur s'initialise, il consulte les plugins installés sur le poste client et construit une table de types (bindings). Voici, par exemple, la table des types construites par deux navigateurs sur un même poste client où sont installés QuickTime 6, RealPlayer 6 et WindowsMedia 7. Ce sont évidemment les mêmes, à l'organisation près.

Liste des plugins présentés par Opera
Liste des plugins présentés par iCab

La table MIME du système client

Il existe une seconde table des types MIME globale au système. Cette table est partagée par les applications Internet (mail, ftp). Elle est mise à jour par les installeurs, consultable et modifiable par l'utilisateur via les "Préférences Internet".

Alors que la table des plugins délègue les informations d'un type donné au plugin adéquat à l'intérieur du navigateur, la table système sert à déléguer ces mêmes informations à une application externe ("helper").

Lorsque le navigateur ne trouve pas le type MIME dans la table des plugins, il enregistre le fichier sur disque et essaiera de l'ouvrir avec l'application déclarée dans le table du système.

Le désaccord entre l'extension de fichier et le type MIME annoncé par le serveur et l'absence du type dans la table des plusing sont les deux facteurs responsables de la plupart des échecs de traitement (fichier téléchargé non présenté, fichier présenté sous forme binaire dans la fenêtre du navigateur).


Annoncer le type MIME correct

Il arrive fréquemment que le serveur HTTP ne connaisse pas un format de fichier (parce qu'il est nouveau, parce qu'il est peu usité). Dans ce cas, il n'annonce pas de type MIME ou annonce un type par défaut (text/plain). Le navigateur affichera du binaire dans sa fenêtre.

Il est essentiel que l'auteur s'assure de la concordance entre extension et type MIME. Pour cela, le plus sûr est de se référer aux déclarations du plugin lui-même ( voir). Exemple: .sml => application/smil. On vérifie ensuite que le serveur HTTP est bien configuré en faisant un GET. Si ce n'est pas le cas, deux contournements sont possibles:

1: placer dans le répertoire un fichier .htacess contenant:
 AddType application/smil .smi .sml .smil

2: forcer le type MIME dans le lien:
 <A HREF="animation.sml" TYPE="application/smil">



[Index] [Ecrire à l'auteur]