我已将 Web 应用程序 (sub.domain.com) 发布到 Internet 信息服务 (IIS) 虚拟服务器,现在希望将其显示在 www.otherdomain.com 上的 iFrame 中。 Web 服务器上发布的 web.config 文件不包含 CSP 指令,直到使用如下所示的自定义键/值对在 IIS 中自动添加 CSP 指令:
然后修改web.config 文件以包含以下内容:
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="frame-ancestors *.otherdomain.com www.otherdomain.com" />
</customHeaders>
</httpProtocol>
到目前为止一切顺利。问题是,当我尝试在 iFrame 中显示页面时,出现以下错误:
拒绝构建“https://sub.domain.com”,因为祖先违反了以下内容安全策略指令:“frame-ancestors 'self'">当我在 Chrome 开发工具中查看生成的响应标头时,它显示存在问题:
1。什么可以自动生成第一个导演(“框架祖先‘自我’”)? IIS? Chrome>?
2。如果存在两个标头,是否会忽略第二个指令(通过 IIS 添加的自定义指令)。
3.我可以尝试什么来解决该错误?
请检查您的应用程序是否有任何设置标头的代码,以及其他 IIS 全局/站点级 CSP 标头设置。什么可以自动生成第一个导演(“框架祖先‘自我’”)? IIS?铬>?
当存在多个 CSP 标头时,将强制执行最严格的 CSP 指令。更多详细信息您可以参考此文档:如果存在两个标头,是否会忽略第二个指令(通过 IIS 添加的自定义指令)。
https://w3c.github.io/webappsec-csp/#multiple-policies
首先确保您只应用一个 CSP 指令(基于问题 2),在这种情况下,我可以尝试什么来解决该错误?
frame-ancestors *.otherdomain.com;
应符合您的需求。