说明
把文本当做HTML代码渲染。
<!DOCTYPE html><html lang="en"><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>Document</title></head><body><div id="app"></div><template id="my-app"><div>{{msg}}</div><div v-html="msg"></div></template><script src="https://unpkg.com/vue@next"></script><script>const App = {template: '#my-app',data() {return {msg: '<span style="color:red; background: blue;">哈哈哈</span>'}}}Vue.createApp(App).mount('#app');</script></body></html>

安全隐患
注意!你的站点上动态渲染的任意 HTML 可能会非常危险,因为它很容易导致 XSS 攻击。

如上图,虽然vue不允许你直接写script标签,但是可以通过其他方式执行
下面代码,放在服务器环境下运行
<!DOCTYPE html><html lang="en"><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>Document</title></head><body><div id="app"></div><template id="my-app"><div>{{msg}}</div><div v-html="msg"></div><div v-html="hack"></div></template><script src="https://unpkg.com/vue@next"></script><script>// 设置cookie,用来测试document.cookie = "name=test";const App = {template: '#my-app',data() {return {msg: '<span style="color:red; background: blue;">哈哈哈</span>',hack: '<img src="123123" alt="" onerror="console.log(document.cookie)">',// 通过输入不存在的img src,让其执行onerror里面的恶意代码}}}Vue.createApp(App).mount('#app');</script></body></html>
如下图,通过输入不存在的img src,让其执行onerror里面的恶意代码。
如果服务器保存了用户输入的恶意代码,然后通过v-html 生成标签,就会执行代码,产生安全隐患
