添加多个SHA256哈希至Content Security Policy无效,求解决方法
解决Content Security Policy添加多个SHA256哈希无效的问题
你遇到的核心问题是多个哈希在default-src中未生效,但单个有效,直接给你可行的解决办法:
1. 针对内联样式用专属指令style-src,而非仅依赖default-src
虽然default-src是所有资源类型的 fallback,但对于内联样式这类特定资源,浏览器会优先匹配style-src的规则。把哈希放到style-src里,同时保留default-src的基础配置,示例如下:
default-src 'self'; style-src 'self' 'sha256-UITiqbXyaWS7NpwiFrMIbdXAZy5EXLRUHkpylF4504k=' 'sha256-0EZqoz+oBhx7gF4nvY2bSqoGyy4zLjNF+SDQXGp/ZrY=';
你的报错显示规则已包含两个哈希但仍触发拒绝,说明浏览器没走default-src的哈希匹配,改用style-src专门配置就能解决这个优先级问题。
2. 验证每个哈希的准确性
多个哈希失效可能是其中某一个和实际内联内容不匹配,重新生成哈希的步骤:
- 复制内联样式的完整代码(仅
<style>标签内的内容,不要包含标签本身) - 计算该内容的SHA256哈希并转成base64格式,再包裹单引号加入规则
3. 排查冲突的CSP配置
检查服务器配置、页面meta标签里是否有其他CSP规则,比如单独设置了style-src 'self'且未包含哈希,这种情况下新的哈希配置会被覆盖,导致失效。
内容的提问来源于stack exchange,提问作者Kazoo2k
相关产品推荐
相关产品推荐

