我正在一个简单的内容管理系统中创建一个网站(站点 A)。由于 CMS 无法与我的数据服务器交互,因此我在另一个 Web 服务器(站点 B - subdomain.example.com)上托管了一些 Web 内容,并将其显示在站点 A 上的 iFrame 中。
我已通过托管站点 B 的 Web 服务器上的 HTTP 响应标头添加了以下内容安全策略:
Content-Security-Policy:
frame-ancestors subdomain.example.com;
在我的台式机上一切正常(iFrame 内容在 Chrome、Safari、Firefox 中正确显示)。但是,当我尝试在 iPhone (iOS 17.1.2) 上显示站点 A 时,iFrame 无法在上述浏览器移动版本的任何浏览器中显示内容。 Safari Web Inspector 显示以下错误:
拒绝加载https://subdomain.example.com/my-site,因为它没有出现在内容安全策略的frame-ancestors指令中
如何修改 CSP 指令以使其在 iOS 中工作?
我尝试用子域名替换通配符,并在路径名中包含 https//: - 都没有成功。我也在网上搜索过,但没有找到解决这个特定问题的方法。我的元素中没有 CSP。
当您要将站点 B 嵌入站点 A 时,站点 B 的内容安全策略中的路径应为 站点 A 的 url。