Explicación del problema de interpretación de la salida HTML de Go
En Go, enviar una salida HTML a través de HTTP a veces puede dar como resultado que la salida se interprete como texto sin formato. Esto ocurre cuando la respuesta carece de los encabezados apropiados que especifiquen el tipo de contenido.
Considere el siguiente 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 Con base.html que contiene lo siguiente:
base.html
Cuando cargue la página servida, observará que el HTML se muestra palabra por palabra en lugar de renderizarse. Esto se debe a que la respuesta carece del encabezado Content-Type, que debe establecerse en text/html.
Para resolver este problema, debe agregar la siguiente línea antes de ejecutar la plantilla:
w.Header().Set("Content-Type", "text/html")
Este encabezado informa al navegador que la respuesta contiene contenido HTML, lo que le permite representar el HTML. respectivamente.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3