Как отключить автоэкранирование в IRIS

Я вставляю теги HTML в таблицу базы данных:

<table>
<tr>
   <td>1</td>
   <td>2</td>
   <td>3</td>
</tr>
</table>

И отправлять полученные данные в View

func MyEvent(ctx iris.Context){
        rows := ...
        ctx.ViewData("rows", rows[0])
        ctx.View("template.html")
}

Как я могу отключить авто-экранирование только в этом случае?

1 ответ

Решение

То, как вы получите необработанный HTML-код через шаблон и в вывод, будет зависеть от того, какой механизм шаблонов вы используете с Iris. Iris поддерживает пять встроенных шаблонизаторов:

Если вы используете стандарт html/template пакет, то вы бы пометили строку как "безопасный HTML", используя template.HTML тип:

ctx.ViewData("rows", template.HTML(rows[0]))

или добавьте свой собственный фильтр, который просто делает return template.HTML(s) и использовать это внутри шаблона.

Если бы вы использовали руль, то вы бы использовали {{{...}}} в шаблоне или raymond.SafeString в помощнике:

{{{yourHTML}}}

Если вы используете один из других шаблонизаторов, вы бы использовали любой механизм, который они предлагают для получения необработанного HTML через шаблон.

Все это предполагает, конечно, что вы очищаете и дезинфицируете HTML-код до того, как он попадет в базу данных или до того, как он попадет из базы данных в шаблон.

Другие вопросы по тегам