gst*_*low 1 html java freemarker view
我有这样的模板:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="800" style="border-collapse: collapse;">
<p>server response: ${response}</p>
...
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
实际上服务器可以获得任何响应。
在某些情况下,服务器返回 html,freemarker 将其解析为 html,看起来很糟糕。
我想向用户显示带有标签等的行 html,如下所示:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
打开 HTML 自动转义,这样${response}就不会呈现为 HTML(这样就可以避免 XSS 漏洞)。用 启动文件就<#ftl output_format="HTML">可以做到这一点。尽管推荐的方法是使用ftlh文件扩展名,然后至少设置incompatible_improvements为 2.3.24,或者设置recognize_standard_file_extensions为true.
如果您由于某种原因不想使用自动转义,您可以编写${response?html}.
由于浏览器不应该折叠空白,因此您当然还希望将该插值放入 HTMLpre或textarea,或者放入div具有white-space: pre-wrap.