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 :
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 Avec base.html contenant les éléments suivants :
base.html
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 contient pas 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 :
w.Header().Set("Content-Type", "text/html")
Cet en-tête informe le navigateur que la réponse contient du contenu HTML, lui permettant de restituer le HTML par conséquent.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3