Maison >développement back-end >Golang >Pourquoi la sortie HTML My Go est-elle affichée sous forme de texte brut ?

Pourquoi la sortie HTML My Go est-elle affichée sous forme de texte brut ?

DDD
DDDoriginal
2024-10-29 20:39:29514parcourir

Why is My Go HTML Output Displayed as Plain Text?

Le problème d'interprétation de la sortie HTML de Go expliqué

Dans Go, l'envoi d'une sortie HTML via HTTP peut parfois entraîner l'interprétation de la sortie comme du texte brut. Cela se produit lorsque la réponse ne dispose pas des en-têtes appropriés spécifiant le type de contenu.

Considérez le code suivant :

<code class="go">requestHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    t := template.New("test")
    t, _ := template.ParseFiles("base.html")
    t.Execute(w, "")
})

server := &http.Server{
    Addr:           ":9999",
    Handler:        requestHandler,
    ReadTimeout:    10 * time.Second,
    WriteTimeout:   10 * time.Second,
    MaxHeaderBytes: 1 << 20,
}

log.Fatal(server.ListenAndServe())

Avec base.html contenant les éléments suivants :

<code class="html"><DOCTYPE html>
<html>
    <body>
        base.html
    </body>
</html></code>

Lorsque vous chargez la page servie, vous remarquerez que le HTML est affiché textuellement au lieu d'être rendu. En effet, la réponse ne dispose pas de l'en-tête Content-Type, qui doit être défini sur text/html.

Pour résoudre ce problème, vous devez ajouter la ligne suivante avant d'exécuter le modèle :

<code class="go">w.Header().Set("Content-Type", "text/html")</code>

Cet en-tête informe le navigateur que la réponse contient du contenu HTML, lui permettant de restituer le HTML en conséquence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn