Explicado o problema de interpretação da saída HTML do Go
No Go, o envio da saída HTML via HTTP às vezes pode resultar na interpretação da saída como texto simples. Isso ocorre quando a resposta não possui os cabeçalhos apropriados especificando o tipo de conteúdo.
Considere o seguinte código:
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 Com base.html contendo o seguinte:
base.html
Ao carregar a página veiculada, você observará que o HTML é exibido literalmente em vez de ser renderizado. Isso ocorre porque a resposta não possui o cabeçalho Content-Type, que deve ser definido como text/html.
Para resolver esse problema, você precisa adicionar a seguinte linha antes de executar o modelo:
w.Header().Set("Content-Type", "text/html")
Este cabeçalho informa ao navegador que a resposta contém conteúdo HTML, permitindo que ele renderize o HTML adequadamente.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3