阻止 nunjucks 逃跑 HTML
Stop nunjucks from escaping HTML
我有一条评论 AJAX 调用了已发布评论的 returns 数据,我还内置了 @mention 功能,服务器端正在处理 @mentions 并执行 str_replace
提到的用户在响应中用 a 标记替换他们的名字,例如:
{
data: {
comment: "<a href=\"profile/derp\">Username</a> hey what's up"
}
}
但是我似乎无法在文档中找到如何允许 nunjucks 打印它作为实际 HTML,它转义它并显示代码而不是让它成为一个真正的标签。
有谁知道我如何才能将其打印为实际的标签?
好的,在我发布这篇文章后,我几乎立刻就找到了答案!对于其他任何人来说,它就是这样;在打印变量的模板中添加安全过滤器,这将禁用自动转义。
{{ comment.content|safe }}
尽管这意味着它容易受到 XSS injection 的攻击,因此请确保在服务器端添加保护。
您可以考虑传递评论的元数据并让模板创建 HTML:
<p>
<a href="{{ comment.user.url }}">{{ comment.user.name }}</a> {{ comment.text }}
</p>
然后传递以下元数据:
comment: {
user: { url: "profile/derp", name: "Username" },
text: "hey what's up"
}
您还可以使用以下方法避免全局转义:
nunjucks.configure({ autoescape: false });
我有一条评论 AJAX 调用了已发布评论的 returns 数据,我还内置了 @mention 功能,服务器端正在处理 @mentions 并执行 str_replace
提到的用户在响应中用 a 标记替换他们的名字,例如:
{
data: {
comment: "<a href=\"profile/derp\">Username</a> hey what's up"
}
}
但是我似乎无法在文档中找到如何允许 nunjucks 打印它作为实际 HTML,它转义它并显示代码而不是让它成为一个真正的标签。
有谁知道我如何才能将其打印为实际的标签?
好的,在我发布这篇文章后,我几乎立刻就找到了答案!对于其他任何人来说,它就是这样;在打印变量的模板中添加安全过滤器,这将禁用自动转义。
{{ comment.content|safe }}
尽管这意味着它容易受到 XSS injection 的攻击,因此请确保在服务器端添加保护。
您可以考虑传递评论的元数据并让模板创建 HTML:
<p>
<a href="{{ comment.user.url }}">{{ comment.user.name }}</a> {{ comment.text }}
</p>
然后传递以下元数据:
comment: {
user: { url: "profile/derp", name: "Username" },
text: "hey what's up"
}
您还可以使用以下方法避免全局转义:
nunjucks.configure({ autoescape: false });