「HTTP Content-Security-Policy(CSP)」レスポンス ヘッダーを使用する場合、Sitecore Horizonは、Content Management(CM)インスタンスのweb.configファイルに設定されている「frame-ancestors」ディレクティブのデフォルト設定を上書きします。これにより、ページがframeまたはiframe内にレンダリングされなくなります。
本事象を解決するには、次のようにweb.configの設定をHorizonの設定に合わせます。
調整前の設定ファイルの例:
CMのweb.configファイル:
<location path="sitecore">
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="frame-ancestors 'self' https://a.com https://b.com" />
</customHeaders>
</httpProtocol>
</system.webServer>
Horizonの設定ファイル:
<setting name="Horizon.ClientHost" value="<Horizonのサイト名>" />
<collectIFrameAllowedDomains>
<processor type="Sitecore.Horizon.Integration.Pipelines.CollectIFrameAllowedDomains.AddDomains, Sitecore.Horizon.Integration" resolve="true">
<allowedDomains hint="list:AddDomain">
<domain>'self'</domain>
<domain>c.com</domain>
<domain>d.com</domain>
</allowedDomains>
</processor>
<processor type="Sitecore.Horizon.Integration.Pipelines.CollectIFrameAllowedDomains.AddHorizonClientHost, Sitecore.Horizon.Integration" resolve="true" />
</collectIFrameAllowedDomains>
調整後の設定ファイルの例:
CMのweb.configファイル:
<location path="sitecore">
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="frame-ancestors 'self' <Horizonのサイト名> https://a.com https://b.com https://c.com https://d.com" />
</customHeaders>
</httpProtocol>
</system.webServer>
Horizonの設定ファイル:
<setting name="Horizon.ClientHost" value="<Horizonのサイト名>" />
<collectIFrameAllowedDomains>
<processor type="Sitecore.Horizon.Integration.Pipelines.CollectIFrameAllowedDomains.AddDomains, Sitecore.Horizon.Integration" resolve="true">
<allowedDomains hint="list:AddDomain">
<domain>'self'</domain>
<domain>a.com</domain>
<domain>b.com</domain>
<domain>c.com</domain>
<domain>d.com</domain>
</allowedDomains>
</processor>
<processor type="Sitecore.Horizon.Integration.Pipelines.CollectIFrameAllowedDomains.AddHorizonClientHost, Sitecore.Horizon.Integration" resolve="true" />
</collectIFrameAllowedDomains>