首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在脚本标记中添加“nonce”

在脚本标记中添加“nonce”
EN

Stack Overflow用户
提问于 2021-04-16 09:54:01
回答 2查看 3.3K关注 0票数 4

我想向动态构造的脚本标记中添加一个nonce。下面的代码不会向生成的脚本标记添加任何时间。有谁知道现在该怎么添加?

代码语言:javascript
运行
复制
var _wss = document.createElement('script');
_wss.nonce = 'random-string';
_wss.type = 'text/javascript';
_wss.charset = 'utf-8';
_wss.async = true;
_wss.src = "url";
var __wss = document.getElementsByTagName('script')[0];
__wss.parentNode.insertBefore(_wss, __wss);

结果是:

代码语言:javascript
运行
复制
<script type="text/javascript" charset="utf-8" async src="url"></script>

预期结果:

代码语言:javascript
运行
复制
<script nonce="random-string" type="text/javascript" charset="utf-8" async src="url"></script>

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-16 10:04:28

我在这个堆栈溢出页面上运行了您的代码,它成功了。

我认为您所遇到的问题是,您希望将nonce作为脚本标记的属性,但它只能在javascript中作为属性使用。

标签看起来像这样

代码语言:javascript
运行
复制
<script type="text/javascript" charset="utf-8" async="" src="url"></script>

但如果你跑了

代码语言:javascript
运行
复制
console.log(document.getElementsByTagName('script')[0].nonce)

它将显示"random-string"

原因是安全。见藏匿。具体来说

出于安全考虑,nonce属性是隐藏的(将返回一个空字符串)。 现在的属性是访问非way的唯一方法:

票数 8
EN

Stack Overflow用户

发布于 2021-04-16 10:03:44

如果要动态导入/构造脚本,则必须使用strict-dynamic CSP源而不是nonce

strict-dynamic源表达式指定显式地赋予标记中的脚本的信任,并附带一个nonce或散列,将由该根脚本加载的所有脚本传播到。同时,任何允许列表或源表达式,如'self‘或’不安全-内联‘都会被忽略。 MDN - CSP: script-src

您还可以阅读更多关于它的内容,并在内容安全策略(CSP)快速参考指南上看到一些示例。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67123053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档