"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como evitar o escape não intencional de HTML e JSON em modelos Go?

Como evitar o escape não intencional de HTML e JSON em modelos Go?

Publicado em 2024-11-09
Navegar:779

How to Avoid Unintended Escaping of HTML and JSON in Go Templates?

Escapando de HTML e JSON em modelos Go

Em modelos Go, é essencial lidar com HTML e JSON corretamente para evitar escapes não intencionais. Considere o seguinte modelo:

 {{ .SomeOtherHTML }} 

Se você espera que a saída seja simplesmente , você pode encontrar o problema em que caracteres especiais como

 <the_other_html/< 

Solução para escape de HTML

Para evitar isso, você deve passar o código HTML como um tipo template.HTML em vez de uma string. template.HTML é um tipo especial que instrui Go a não escapar de seu conteúdo. Por exemplo:

tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}{{.String}}{{end}}`))
tplVars := map[string]interface{} {
    "Html": template.HTML("

Paragraph

"), "String": "

Paragraph

", } tpl.ExecuteTemplate(os.Stdout, "T", tplVars)

Solução para escape de JSON

Se você também precisar renderizar JSON, você deve usar o json. Função Marshal para convertê-lo em uma matriz de bytes. Isso evita que Go escape do conteúdo JSON. Por exemplo:

jsonBytes, _ := json.Marshal(data)
outputString := string(jsonBytes)

Seguindo essas práticas recomendadas, você pode garantir o escape adequado de HTML e JSON em seus modelos Go, resultando na saída desejada sem modificações indesejadas.

Tutorial mais recente Mais>

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