首页 > 解决方案 > 可以在不违反`script-src-attr: 'none' 的情况下使用超HTML 内联式事件处理程序吗?

问题描述

在使用 hyperHTML 创建类似:

    this.html`
      <input
        name="mode"
        type="radio"
        onclick=${this.handleClick}
      />
    `;

...我在 Chrome 中收到此错误(违反我启用的严格标头策略helmet):

拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src-attr 'none'”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-...”)或随机数(“nonce-...”)。请注意,哈希不适用于事件处理程序、样式属性和 javascript: 导航,除非存在 'unsafe-hashes' 关键字。

在构建的源代码中,我看到它以onclick="function". 有什么方法可以让 hyperHTML 在仍然使用内联语法的同时避免生成它?

标签: javascriptcontent-security-policyhyperhtml

解决方案


我意识到我愚蠢地没有使用其中一种hyperHTML-Element方法,所以我只是在构建一个字符串。

看来我可以使用HyperHTMLElement.wire()(尽管没有在那里记录,但在 hyperHTML-Element 和 hyperHTML 中都可以使用)或者只使用 alias HyperHTMLElement.hyper


推荐阅读