问题描述
我试图让用户在找不到404时返回到先前的屏幕,但是我的CSP正在阻止我。
使用nonce似乎是解决问题的方法,但是我无法让事情顺利。
理想情况下,我想将现时数添加到我的href中,但是我不确定这是否可行。另外,我想从404文件中运行一些javascript,但似乎并没有提高我的现时价值。
这是我在头盔csp中设置随机数的方法:
app.locals.nonce = crypto.randomBytes(16).toString("hex");
app.use(csp({
directives: {
defaultSrc: ["'self'"],styleSrc: ["'self'"],scriptSrc: ["'self'",`'nonce-${app.locals.nonce}'`],imgSrc: ["'self'"],fontSrc: ["'self'"]
}
}));
在nunjucks 404页面中,我试图返回上一页:
{% set n = "nonce-"+nonce %}
<a nonce={{n}} href="javascript:history.go(-1);">{{ t('404:goBack')</a>
在底部,我这样设置了脚本标签:
<style nonce=app.locals.nonce>
console.log('inside 404')
</style>
在进入404页面时,Chrome出现以下错误: eligibilixxxty-sf-debt:38拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“ script-src'self''nonce-a8ff45c6cc9b12df8111202f13d1c000'”。要启用内联执行,要么使用哈希('sha256- + 6WnXIl4mbFTCARd8N3COQmT3bJJmo32N8q8ZSQAIcU ='),要么使用随机数(nonce)。
然后单击href链接可获得以下响应: 拒绝运行JavaScript URL,因为它违反了以下内容安全策略指令:“ script-src'self''nonce-a8ff45c6cc9b12df8111202f13d1c000'”。要启用内联执行,需要使用'unsafe-inline'关键字,哈希('sha256 -...')或随机数('nonce -...')。
有什么想法我要去哪里吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)