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:[email protected]" 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 關注
- 247 瀏覽
添加回答
舉報