Servez un seul document HTML avec Content-Type: text/html; charset=utf-8, son titre et sa description dans l’en-tête du document, ainsi qu’un contenu lisible dans le corps. Ce guide pour Mac crée une page fictive et vérifie qu’une seule réponse contient les trois éléments.
L’objectif est de préparer un document public lisible dans un navigateur, en utilisant un aperçu local avant de transférer la même structure vers un système de publication. L’exemple ne contient que du texte inventé sur des formes en papier et ne nécessite aucune ressource externe.
Que doit contenir une seule réponse HTTP typée ?
« Typée » signifie que la réponse déclare son type de média. Le champ Content-Type indique au destinataire le format de la représentation et la manière dont elle est censée être traitée. Ici, ce format est HTML. Il ne fournit pas de schéma applicatif champ par champ. RFC 9110, section 8.3
Une réponse HTTP/1.1 comprend une ligne d’état, des champs d’en-tête, une ligne vide et un corps facultatif. Vous pouvez donc envoyer les métadonnées de transport dans les en-têtes et le document complet dans le corps, sans créer de requête de métadonnées distincte. RFC 9112, section 2.1
Pour cette tâche de publication, suivez le guide de placement ci-dessous. Il distingue les informations décrivant la représentation HTTP de celles décrivant la page.
| Information | Emplacement | Exemple |
|---|---|---|
| Format et encodage de la représentation | En-tête HTTP | Content-Type: text/html; charset=utf-8 |
| Titre du document | En-tête HTML | <title>Paper Shapes: Circle and Square</title> |
| Résumé de la page | En-tête HTML | <meta name="description" content="A short guide to arranging paper circles and squares."> |
| Contenu destiné aux lecteurs | Corps HTML | Titre, introduction et instructions de disposition |
Le WHATWG définit l’élément title comme le titre ou le nom du document et la valeur des métadonnées de description comme une description de la page. Utilisez un seul titre et au plus une déclaration de description. Comme ces éléments se trouvent dans le document HTML, le contenu et les métadonnées descriptives sont transmis ensemble. Norme HTML : métadonnées du document
Comment créer un aperçu fonctionnel sur Mac ?
Ouvrez Terminal et vérifiez les commandes disponibles :
python3 --version
curl --version
Le programme ci-dessous nécessite Python 3.7 ou une version ultérieure et utilise uniquement sa bibliothèque standard. Si python3 n’est pas disponible, suivez les instructions officielles d’installation pour macOS, puis rouvrez Terminal. La documentation de Python décrit à la fois le programme d’installation et le lancement de python3 depuis un terminal. Utiliser Python sur macOS
Collez le bloc complet ci-dessous dans Terminal, y compris la commande d’ouverture et la ligne finale PY. Le programme s’exécute directement ; il ne crée ni ne remplace aucun fichier. Laissez cette fenêtre de terminal ouverte pendant que vous vérifiez la page.
python3 - <<'PY'
from html import escape
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
TITLE = "Paper Shapes: Circle and Square"
SUMMARY = "A short guide to arranging paper circles and squares."
PAGE = f"""<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>{escape(TITLE)}</title>
<meta name="description" content="{escape(SUMMARY, quote=True)}">
</head>
<body>
<main>
<h1>{escape(TITLE)}</h1>
<p>{escape(SUMMARY)}</p>
<h2>Try a simple arrangement</h2>
<p>Place one paper circle beside one paper square.</p>
<p>Switch their positions — then compare the two arrangements.</p>
</main>
</body>
</html>
""".encode("utf-8")
class Handler(BaseHTTPRequestHandler):
protocol_version = "HTTP/1.1"
def respond(self, include_body):
if self.path != "/paper-shapes":
self.send_error(404, "Page not found")
return
self.send_response(200)
self.send_header("Content-Type", "text/html; charset=utf-8")
self.send_header("Content-Length", str(len(PAGE)))
self.end_headers()
if include_body:
self.wfile.write(PAGE)
def do_GET(self):
self.respond(True)
def do_HEAD(self):
self.respond(False)
if __name__ == "__main__":
with ThreadingHTTPServer(("127.0.0.1", 8000), Handler) as server:
print("Preview: http://127.0.0.1:8000/paper-shapes", flush=True)
try:
server.serve_forever()
except KeyboardInterrupt:
pass
PY
Le gestionnaire utilise les méthodes de réponse documentées de Python : send_response() démarre la réponse, send_header() ajoute les champs, et end_headers() termine la section d’en-tête avant l’écriture des octets du corps. Documentation du serveur HTTP Python
L’exemple définit délibérément TITLE et SUMMARY une seule fois. Ces valeurs servent à la fois pour les métadonnées et pour le texte visible, ce qui facilite les révisions cohérentes de ce petit document. Pour une page plus longue, la description peut différer du paragraphe d’ouverture tout en résumant fidèlement le même sujet.
La page est encodée avant le calcul de sa longueur. HTTP définit Content-Length en octets ; compter les caractères donnerait un résultat incorrect avec le tiret cadratin de cet exemple. RFC 9110, section 8.6
Comment vérifier que le contenu et les métadonnées sont arrivés ensemble ?
Ouvrez une deuxième fenêtre Terminal et exécutez cette commande. Elle envoie une requête de document ordinaire et affiche à la fois les en-têtes de réponse et le contenu :
curl -i --max-time 10 http://127.0.0.1:8000/paper-shapes
L’option -i inclut les en-têtes de réponse dans le même flux de sortie que le corps. La limite de temps plafonne le transfert à dix secondes. Ces options sont décrites dans le manuel de la ligne de commande curl.
Vérifiez la sortie dans l’ordre :
- La ligne d’état doit indiquer
200 OK. - Un seul champ
Content-Typedoit déclarertext/html; charset=utf-8. - Après la ligne vide qui termine la section d’en-tête, le HTML doit contenir le titre et la description.
- Le même corps doit contenir les instructions sur les formes en papier.
- Le tiret cadratin doit s’afficher correctement dans le texte décodé.
Ensuite, saisissez http://127.0.0.1:8000/paper-shapes dans la barre d’adresse de Safari. La page affichée doit montrer son titre, son résumé et ses instructions. La déclaration de description constitue une métadonnée ; sa présence se vérifie dans le balisage renvoyé, et ne se déduit pas de l’apparence de la page.
Vous pouvez aussi vérifier la requête limitée aux en-têtes :
curl -I --max-time 10 http://127.0.0.1:8000/paper-shapes
Cette commande envoie HEAD ; elle ne permet donc pas de vérifier que le corps contient le titre ou la description. Une réponse HEAD omet le contenu tout en décrivant la représentation correspondante ; utilisez la vérification GET ci-dessus pour examiner le document lui-même. RFC 9110, section 8.2
Si l’aperçu ne fonctionne pas, choisissez la prochaine action en fonction du symptôme :
| Symptôme | Action suivante |
|---|---|
| Au démarrage, un message indique que l’adresse est déjà utilisée | Remplacez 8000 par 8001 dans le programme, relancez-le et utilisez 8001 dans chaque commande d’aperçu. |
| La requête signale un échec de connexion | Vérifiez que le premier terminal affiche toujours l’aperçu en cours d’exécution et que les ports correspondent. |
La réponse est 404 |
Utilisez exactement /paper-shapes ; cet exemple n’accepte ni barre oblique finale ni chaîne de requête. |
| Le navigateur affiche encore une ancienne version | Arrêtez le programme avec Control-C, relancez le bloc modifié et rechargez la page. |
| Le titre s’affiche correctement, mais les métadonnées manquent | Examinez la sortie GET et vérifiez que les déclarations se trouvent dans l’en-tête du document. |
Quelles informations Google Search peut-il tirer de cette réponse ?
Un titre descriptif, une description exacte et un texte visible utile fournissent à Google des éléments documentés pour présenter une page. Google cite l’élément title, le titre visuel principal, les éléments d’en-tête et d’autres sources parmi les éléments utilisés pour générer automatiquement les liens de titre. Veillez à ce que ces indices correspondent au sujet du document. Influencer les liens de titre dans les résultats de recherche
Google génère principalement les extraits à partir du contenu de la page et utilise parfois la méta-description lorsqu’elle décrit la page plus précisément. Les recherches peuvent produire des extraits différents. Considérez la description comme un résumé utile plutôt que comme une légende fixe dans les résultats de recherche. Contrôler vos extraits dans les résultats de recherche
Dans l’exemple fictif, la description annonce un bref guide de disposition et le corps fournit ce guide. Lorsque vous remplacez le texte d’exemple, vérifiez explicitement cette cohérence : une personne qui ne lit que la description doit se faire une idée exacte de la page.
L’ajout de noms de métadonnées personnalisés ne garantit pas leur prise en charge. Google indique qu’il ignore les balises meta qu’il ne prend pas en charge. Utilisez ses champs documentés pour les métadonnées destinées à la recherche ; un champ inventé pour votre propre application nécessite un destinataire défini séparément. Balises meta et attributs pris en charge par Google
Comment transformer l’aperçu en méthode de publication publique ?
L’adresse locale de ce guide sert à l’aperçu sur ordinateur ; elle ne correspond pas à une page publiée. Python précise également que http.server n’est pas recommandé en production. Transférez la structure HTML et les exigences de réponse vers votre système de publication au lieu d’utiliser cette démonstration comme service d’hébergement public. Documentation du serveur HTTP Python
Si vous utilisez un système de gestion de contenu, repérez les commandes documentées pour le titre de page et la méta-description. Google indique qu’un CMS peut proposer des paramètres de recherche plutôt que l’édition directe du HTML. Faites correspondre ces commandes aux champs présentés ici, puis examinez la réponse du document obtenue. Conseils de Google pour ajouter des méta-descriptions
HTTP prend en charge les représentations multipart, mais il s’agit d’un autre choix de formatage. Pour cette tâche de document HTML lisible dans un navigateur, la structure HTML prise en charge permet déjà de réunir le contenu et les métadonnées du document dans une seule représentation. Choisir multipart imposerait une exigence de traitement côté destinataire dont ce guide n’a pas besoin. RFC 9110, section 8.3.3
La vérification finale est concrète : une seule requête de document réussie renvoie le type de média correct, un corps HTML complet, un titre et une description exacts, ainsi que le texte recherché par les lecteurs. Appliquez aussi cette vérification à la réponse publique finale, en plus de l’aperçu local, afin que le système de publication produise le document que vous avez préparé.
Sources
- RFC 9110 : sémantique HTTP — IETF / RFC Editor.
- RFC 9112 : HTTP/1.1 — IETF / RFC Editor.
- Norme HTML : métadonnées du document — WHATWG.
- Utiliser Python sur macOS — Python Software Foundation.
- http.server — Serveurs HTTP — Python Software Foundation.
- curl — Guide d’utilisation — curl.
- Influencer les liens de titre dans Google Search — Google Search Central.
- Rédiger des méta-descriptions — Google Search Central.
- Balises meta et attributs pris en charge par Google — Google Search Central.