iframe中Content Security Policy配置:设置*.abc.def.com无法加载iframe原因?
frame-ancestors配置
*.abc.def.com不生效的核心原因 CSP的frame-ancestors指令通配符匹配有明确的规则限制,不生效是因为匹配逻辑不覆盖你的当前站点域名:
- 通配符
*仅能匹配当前域名层级的前缀,不能匹配域名本身,也不能跨层级匹配。*.abc.def.com的匹配范围是所有带前缀的abc.def.com子域名,比如a.abc.def.com、b.xyz.abc.def.com这类域名,而你的父页面域名是abc.def.com,没有额外的子域名前缀,不在这个规则的匹配范围内,所以会被拦截。 - 你之前测试生效的几个规则刚好都覆盖了
abc.def.com:*.def.com匹配所有.def.com后缀的子域名,包含abc.def.comabc.def.com是精确匹配你的站点域名*.com匹配所有.com后缀的域名,自然也包含你的站点
修复方案
如果需要同时允许abc.def.com本身和它的所有子域名嵌入iframe,需要同时配置精确匹配和通配符规则,示例如下:
Content-Security-Policy: frame-ancestors 'self' abc.def.com *.abc.def.com;
内容的提问来源于stack exchange,提问作者Himanshu Rai
相关产品推荐
相关产品推荐

