Вот как я это сделал, для вас Экспресс людей. Кажется, что он работал очень хорошо в сочетании с экспресс-дезинфицирующими средствами.
app.js
import expressSanitizer from 'express-sanitizer'
app.use(expressSanitizer())
app.post('/route', async (req, res) => {
const title = req.body.article.title
const content = req.sanitize(req.body.article.content)
// Do stuff with content
})
новый.EJS
<head>
<link href="https://cdn.quilljs.com/1.3.2/quill.snow.css" rel="stylesheet">
</head>
...
<form action="/route" method="POST">
<input type="text" name="article[title]" placeholder="Enter Title">
<div id="editor"></div>
<input type="submit" onclick="return quillContents()" />
</form>
...
<script src="https://cdn.quilljs.com/1.3.2/quill.js"></script>
<script>
const quill = new Quill('#editor', {
theme: 'snow'
})
const quillContents =() => {
const form = document.forms[0]
const editor = document.createElement('input')
editor.type = 'hidden'
editor.name = 'article[content]'
editor.value = document.querySelector('.ql-editor').innerHTML
form.appendChild(editor)
return form.submit()
}
</script>
express-sanitizer
(https://www.npmjs.com/package/express-sanitizer)
document.forms
(https://developer.mozilla.org/en-US/docs/Web/API/Document/forms)
мой взгляд имеет только одну форму, так что я использовал document.forms[0]
, но если у вас есть несколько или может расширить ваш взгляд в будущее чтобы иметь несколько форм, проверьте ссылку MDN.
Здесь мы создаем скрытый ввод формы, который мы присваиваем содержимому Quill Div, а затем мы загружаем форму submit и передаем ее через нашу функцию, чтобы завершить ее. Теперь, чтобы проверить это, сделайте пометку с <script>alert()</script>
, и вам не придется беспокоиться о эксплойтах инъекций.
Вот и все.
Это похоже на работу довольно хорошо: https://github.com/nozer/quill-delta-to-html –