CSP指令的顺序是否会影响其语义效果?
CSP指令顺序与default-src优先级问题
结论先行
两种写法语义完全一致,最终生效的是 script-src-elem: https://example.com —— 指令书写顺序不影响优先级,具体资源类型指令永远优先于default-src。
详细解释
default-src的本质是「所有未明确指定的资源类型的后备规则」,当你在CSP头中同时声明了default-src和对应的具体指令(比如这里的script-src-elem),不管两者的先后顺序如何,都会优先采用具体指令的规则,default-src里的对应设置会被直接忽略。
拿你给出的两个例子来说:
- 写法一:
Content-Security-Policy: default-src 'self'; script-src-elem https://example.com
- 写法二:
Content-Security-Policy: script-src-elem https://example.com; default-src 'self'
这两种配置下,脚本元素的加载规则都会遵循script-src-elem指定的https://example.com,default-src的'self'不会对脚本元素产生任何影响。
核心逻辑
CSP的解析是按指令类型的优先级处理,而非按书写的左到右顺序。具体的资源类型指令(如script-src、script-src-elem、style-src等)优先级高于通用的default-src,只要存在具体指令,就会直接使用其规则,和它在头中的位置无关。
内容的提问来源于stack exchange,提问作者EagleRainbow
相关产品推荐
相关产品推荐

