[html] balise méta http-equiv

balise méta http-equiv [html] - Programmation

Marsh Posté le 29-03-2001 à 18:05:49    

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
A quoi sert cette balise? Est-elle indispensable? Peut-elle provoquer des bugs?


---------------
Découvrez la version 2005 du  Site des Mains!! C'est la même qu'en 2004!
Reply

Marsh Posté le 29-03-2001 à 18:05:49   

Reply

Marsh Posté le 29-03-2001 à 22:35:23    

Une petite réponse?

Reply

Marsh Posté le 29-03-2001 à 23:03:27    

a rien, c webexpert ki met ca je crois

Reply

Marsh Posté le 30-03-2001 à 16:23:21    

la balise <meta http-equiv> sert à présiser dans la page HTML des paramètres qui sont normalements indiqués au niveau HTTP. En l'occurence ta balise sert à préciser le type mime du document transporté (text/html) et sa page de caractères (iso-8859-1).

Reply

Marsh Posté le 30-03-2001 à 16:59:47    

Puis-je l'enlever ou pas?

Reply

Marsh Posté le 30-03-2001 à 17:25:39    

attention, si tu l'enlève ça va faire planter ton PC, bruler ta maison et ta copine va partir...
je plaisante
c'est juste pour définir la norme
y a pas de meta indispensable.....
tu peux l'enlever, t'aura gagner une vingtaine d'octets....
on n'a pas d'sous...

Reply

Marsh Posté le 30-03-2001 à 18:41:09    

Et ça peut-être à l'origine de problèmes genre IE qui bloque lors de la connexion sur la page? En fait si je demande ça, c'est parce que ya des gens qui n'arrivent pas à aller sur mon site.

Reply

Marsh Posté le 30-03-2001 à 23:30:07    

Le meta HTTP n'est nécessaire dans une page HTML que si le serveur Web ne sait pas quel Content-Type générer pour une page HTML: dans ce cas il peut très bien soit ne pas générer de Content-Type du tout, ou bien en générer un autre (tel que pourquoi pas "text/plain", et le navigateur client n'interpréterait pas le contenu comme du HTML et afficherait les balises au lieu de les interpréter), ou bien donner des valeurs par défaut incorrectes (par exemple le web server pourrait envoyer un content-type "text/html; charset="iso8859-1", alors que la page est encodé avec un jeu de caractères UTF-8 ou PC850, ce qui aurait pour effet soit de planter l'interprétation des balises HTML placées derrières un caractère non ASCII, soit d'afficher les mauvais accents)
 
Maintenant, par défaut, la plupart des serveurs web sont configurés pour générer automatiquement l'entête "Content-Type: text/html; charset=iso-8859-1" pour toutes les réponses à des requêtes portant sur des fichiers ayant l'extension ".htm" ou ".html" (c'est la configuration des types MIME).
 
Pour les autres cas, il y a des serveurs web qui savent lire dans la page HTML pour rechercher les <META HTTP-EQUIV> : ils les utilisent pour générer directement les bons entêtes MIME, et renvoie dans le corps de la réponse HTTP la page, qui peut au passage avoir été filtrée de ses META HTTP-EQUIV qui ne sont plus nécessaires puisqu'ils figurent dans l'entête de la réponse.
 
En principe ce genre de traitement n'est pas fait par défaut, sauf pour les pages ".shtml" qui contiennent des scripts serveurs: la page n'est passeulement lue du fichier, mais interprétée par un filtre script, qui génère les server-side includes, remplace les place-holders, et peut compacter le contenu envoyé au client, le filtre pouvant aussi générer des entêtes MIME supplémentaires (par exemple générer des "ETag" de sessions)
 
En dépit de tout ça, un bon navigateur ne plantera pas avec cet entête encore présent dans le corps de lapage envoyé au client: la norme HTML prescrit que la présence du META HTTP-EQUIV dans l'entête de la page (et uniquement dans ce cas là: le meta doit être placé dans la section <HEAD>, sinon il sera ignoré dans la section <BODY>, ou si <HEAD> ou <HTML> sont absents), sera prioritaire sur tout autre entête MIME généré par le serveur web.
 
Cela signifie qu'en l'absence de configuration spéciale du serveur web (qui génère par défaut un "Content-Type: text/html" sans préciser de charset, et indique au navigateur d'utiliser son charset par défaut), la balise META permet de forcer le navigateur dans un autre charset (il ignorera l'entête généré par défaut par le serveur web, et prendra celui indiqué dans la page).
 
Attention dans ce cas: la balise META doit être placée à un endroit où cela ne pose pas de problème au navigateur. Si on place la balise <META HTTP-EQUIV> après le <TITLE> et si le <TITLE> ne peut pas être interprété correctement avec le bon charset sans le <META>, il est possible que le META qui vient ensuite ne permette pas au navigateur de changer l'interprétation du <TITLE> qu'il a déjà en mémoire. D'autres navigateurs dans ce cas s'en sortent en essayant de relire la page dans son cache pour réinterpréter son contenu.
 
Netscape lui préfère redemander la page au serveur car il se rend compte de son erreur d'interprétation trop tard, et son cache n'est pas complet pour qu'il puisse l'utiliser: le serveur voit la session de réponse abandonnée et une seconde requête à la même page (lors du premier accès au serveur, sinon s'il a déjà une interprétation d'une autre page, il la garde et ne cherche pas à corriger, car cela pose problème avec les pages dynamiques des formulaires: c'est un bogue).
 
Aussi les <META HTTP-EQUIV> doivent de préférence être placés le plus haut possible dans la page, juste après <HEAD>, et avant <TITLE>, si cela altère l'interprétation correcte du texte comme <TITLE>, ou de la langue (en l'absence d'attribut lang= dans les balises qui précède le META en HTML 4.01). C'est à cause de ces problèmes que maintenant les bons serveurs Web filtrent les balises META HTTP-EQUIV des pages HTML avant leur envoi, afin que cela ne pose jamais de problème à l'agent client.
 
Pour HTML 4.01, le charset par défaut (s'il n'y a rien dans l'entête MIME généré par le serveur, ou dans un META du document), est normalement iso-8859-1 (pour des raisons de compatibilité avec les versions précédentes du langage HTML).

 

[edit]--Message édité par verdy_p--[/edit]

Reply

Marsh Posté le 31-03-2001 à 00:15:07    

Merci!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed