Объяснение проблемы интерпретации вывода HTML в Go
В Go отправка вывода HTML через HTTP может иногда приводить к тому, что вывод интерпретируется как открытый текст. Это происходит, когда в ответе отсутствуют соответствующие заголовки, определяющие тип контента.
Рассмотрите следующий код:
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 С base.html, содержащим следующее:
base.html
Когда вы загружаете обслуживаемую страницу, вы заметите, что HTML отображается дословно, а не отображается. Это связано с тем, что в ответе отсутствует заголовок Content-Type, который должен иметь значение text/html.
Чтобы решить эту проблему, перед выполнением шаблона необходимо добавить следующую строку:
w.Header().Set("Content-Type", "text/html")
Этот заголовок сообщает браузеру, что ответ содержит содержимое HTML, что позволяет ему отображать HTML соответственно.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3