【问题标题】:Vue inline template and CSPVue 内联模板和 CSP
【发布时间】:2018-08-03 11:17:26
【问题描述】:

我需要将 CSP 标头添加到网站。该站点将 Vue 2.* 用于一些基本的反应性内容。没什么特别的,只是一些v-model、v-bind 和v-on。同样,它都是内联使用的; Vue 组件将是矫枉过正。

伪代码:

<body>
    <div id="app">
        <button v-on="toggle">...</button
    </div>
    <script>
        new Vue({
            el: '#app"
        });
    </script>
</body

当将脚本 CSP 标头设置为 Content-Security-Policy: script-src 'self'; 时,已安装元素内的所有内容都呈现为空白。

我改用 read that a render function should be used 是为了避免在 Vue 的模板编译器中调用 eval(),但这让我们回到将所有内容转换为 Vue 组件的问题。

是否有任何替代方法可以让我将元素的内部内容内嵌在全局 HTML 文件中?

【问题讨论】:

  • 在我的例子中,标记出现在 HTML 源代码中,但在虚拟 dom 的上下文中,输出是 &lt;!----&gt; 或空注释块。即使 sha-512 配置为允许“严格动态”`,并且在 Chromium 下运行内联 Vue 模板,情况也是如此。

标签: vue.js content-security-policy


【解决方案1】:

没有。如果 HTML 中有 Vue 标记,那它就不是真正的 HTML,它是一个 Vue 模板,而 Vue 对模板的处理使用了eval。

组件过大的想法表明您认为它们令人生畏或深奥。它们是 Vue 编程的基本组成部分。我们将它们用于许多非常小的事情。创建一个组件,其模板是您现在在应用程序中拥有的 HTML。使用this article 中的渲染函数将其应用到您的 div。完成。

【讨论】:

  • 我不一定认为组件令人生畏,但在这个项目中,所有页面都将 Vue 安装在顶级 div(body 标签的直接子级)上,以便随意使用它以获得一些快速的美感糖。
  • 我同意 OP 的观点,这太过分了。也许他们应该用实际的代码来改进他们的问题,因为我只是用搜索表单尝试过这个并且只遇到了冲突。
  • 我认为在 OP 的情况下使用 Vue 是多余的。这是一个用于“快速美化糖”的框架。
猜你喜欢
  • 2022-07-24
  • 2019-01-02
  • 2011-04-11
  • 2017-11-12
  • 2017-11-24
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多