如何为前缀为test的域名配置CSP允许规则
解决CSP中匹配所有test前缀域名的问题
问题原因
你之前配置的connect-src 'self' test:*无效,是因为test:*不符合CSP的源规则——CSP中冒号前的部分只能是合法协议(如http、https),test不是协议,所以这个规则会被浏览器忽略,实际生效的只有'self',导致https://test.smtth这类域名被拦截。
正确配置方案
CSP不支持直接的前缀字符串匹配,只能通过通配符按域名段匹配。要覆盖所有以test开头的域名(如test.smtth、test.fun.uk、test.a.b.c.com等),需要组合多段通配符规则:
connect-src 'self' test.* test.*.* test.*.*.*
test.*匹配单段后缀的域名(如test.com、test.uk)test.*.*匹配两段后缀的域名(如test.fun.uk、test.smtth.com)test.*.*.*匹配三段后缀的域名(如test.a.b.com)
如果只需要允许HTTPS协议的这类域名,要加上协议前缀:
connect-src 'self' https://test.* https://test.*.* https://test.*.*.*
注意事项
- 通配符
*在CSP中只能匹配完整的域名段,无法跨段匹配,所以需要根据你实际的域名层级补充对应规则 - 尽量避免使用
*直接匹配所有域名,会带来安全风险,只保留你实际需要的规则即可
内容的提问来源于stack exchange,提问作者Vasyl Gutnyk
相关产品推荐
相关产品推荐

