【发布时间】:2018-02-16 12:20:54
【问题描述】:
我现在有一个奇怪的问题,我正在寻找有关如何处理这个问题的任何见解。
我目前使用Basecamp Trix editor 接受 HTML 输入。
当我将输入发送到我的 Laravel 应用程序时,它会保存到我的数据库中:
<div><script>alert('test');</script></div>
但是,问题是当我使用 Laravel 的刀片将其插入 Vue 属性时,它实际上以某种方式将其转换回有效的 HTML:
<reply :data-reply="{{ $reply }}"></reply>
结果:
似乎 Laravel 使用刀片 echo 语句将脚本标签转换为有效的 HTML?
我的观点:
{{ $reply }}
结果:
{"id":63,"created_at":"2017-09-07 13:30:53","updated_at":"2017-09-07 13:35:05","user_id":1,"body":"<div><script>alert('test');<\/script><\/div>","options":null}
问题是,我无法清理它,因为 HTML 数据实际上是在我的数据库中转义的,但是当 Laravel 将我的回复转换为 JSON 时,它实际上取消了脚本标签,并且在使用 @ 时它实际上是在 Vue 中运行的987654328@指令。
我知道在使用 v-html 指令时我不应该接受用户输入,但我需要 HTML 支持来回复回复,而且我无法在我的 Laravel 应用程序中清理已经转义的 HTML。
有没有人知道如何以某种方式清理 Trix 的内容?
【问题讨论】:
-
试试
<reply :data-reply="{!! $reply !!}"></reply>?
标签: php laravel vue.js vuejs2 trix