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!