2 回答
TA贡献1829条经验 获得超6个赞
您可以尝试在模板内遍历数组并为数组的每个元素生成 ap 标记。这样就不需要在 go 中编辑主数组。
模板:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dynamic JSON Events</title>
<link rel="stylesheet" href="/blogtemplate.css"></style>
</head>
<body>
<section id="title">
<h1 id="text-title">{{.Title}}</h1>
<time id="timestamp">
{{.Timestamp}}
</time>
</section>
<nav role="navigation" id="site-nav">
<ul id="sitemap">
</ul>
</nav>
<main role="main" id="main">
{{range $element := .Main}} <p>{{$element}}</p> {{end}}
</main>
<footer role="contentinfo" id="footer">
<form id="contact-form" role="form">
<address>
Contact me by <a id="my-email" href="mailto:antonhibl11@gmail.com" class="my-email">e-mail</a>
</address>
</form>
</footer>
<script defer src="/blogtemplate.js">
</script>
</body>
</html>
TA贡献1909条经验 获得超7个赞
如果您希望 JSON 文档包含 HTML,请执行以下操作:
将 ParsedMain更改为键入html.HTML:
type BlogPost struct { ... ParsedMain html.HTML }
分配字段时转换为该类型:
post.ParsedMain = html.HTML(strings.Join(post.Main, "")).
替换文档中的``\
with
n`。
如果不受信任的用户可以输入 JSON 文档数据,那么应用程序应该根据允许列表过滤 HTML 标记和属性。这可以防止攻击者通过脚本注入发起攻击。
如果要将 JSON 文档中的换行符转换为 HTML 中的换行符,请执行以下操作:
更改文档以包含换行符:\\n-> \n。
在服务器或客户端上,用 HTML 换行符替换换行符。为防止脚本注入攻击,请在插入<br>. 以下是在服务器上执行此操作的方法:
type BlogPost struct {
...
ParsedMain html.HTML
}
escapedAndJoined := html.Escaper(post.Main...)
post.ParsedMain = html.HTML(strings.ReplaceAll(escapedAndJoined, "\n", "<br>"))).
您可能想使用<p>而不是<br>.
- 2 回答
- 0 关注
- 217 浏览
添加回答
举报