咨询1
咨询2
交流群
电话

文章详细页的正文字段包含html标签

文档 > 常见问题 2018-07-09 17:37 阅读

文章的正文字段使用的是富文本编辑器,可以直接在编辑器里面进行排版,最终保存到数据库的是html格式的数据,如:

<p>这是正文</p>
<p>正文第一段</p>
<p>正文第二段</p>

这些内容作为html显示到浏览器时,并不会把html标签<p>...</p>显示出来,而只显示标签里面的内容。比如:

这是正文
正文第一段
正文第二段

但是为了防止xss跨站脚本攻击,通常模板会对输出的内容做html转义,也就是会把< >转义成&lt; &gt;,这样就会直接把html标签显示出来。

freemarker通常用?html进行转义,如${text?html},这种方式要对每一个输出的变量都进行转义。

还有一种方式可以对一段的freemarker代码都进行转义,如:

[#escape x as (x)!?html]
...
${text}
...
[/#escape]

这就是正文中会出现html标签的原因。注意模板的开头和结尾是否包含这些代码,如果包含,则代表会对所有输出的变量都进行html转义。

如果希望某些变量不要做html转义,可以使用下面的方式解决这个问题:

[#escape x as (x)!?html]
...
[#noescape]${text}[/#noescape]
...
[/#escape]