内联自执行JS违反CSP,添加指定meta标签后仍报错,问题何在?
问题原因及解决办法
核心问题:meta标签格式错误
你写的meta标签把CSP指令内容直接放到了http-equiv属性里,这不符合HTML规范。http-equiv属性仅用于指定HTTP头的名称(此处应为Content-Security-Policy),具体的CSP规则必须放在content属性中。
正确的CSP meta标签写法
将你的meta标签修改为以下格式:
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'sha256-ZdElrYr3TtaKtaoIZnHOTnExAQZ24F52ZnNNnSzy16M=';">
补充说明:
script-src 'self':保留默认的同源脚本加载权限,避免影响页面中其他合法的同源脚本(如同源外部JS文件)'sha256-xxx':即错误提示中给出的内联脚本哈希值,用于授权这个特定的内联脚本执行
额外验证建议
如果修改后仍报错,需确认哈希值与你的内联脚本完全匹配:
- 复制内联脚本的纯代码(去掉
<script>标签) - 用SHA-256算法计算其哈希值并转为Base64编码
- 对比结果与错误提示中的哈希值,确保无多余空格、换行等差异
内容的提问来源于stack exchange,提问作者padavan
相关产品推荐
相关产品推荐

