iFrame 内容拒绝仅在 iOS 浏览器上加载 - 即使发布了内容安全策略 (CSP) 框架祖先指令

问题描述 投票:0回答:1

我正在一个简单的内容管理系统中创建一个网站(站点 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。

ios iframe mobile cross-browser content-security-policy
1个回答
0
投票

当您要将站点 B 嵌入站点 A 时,站点 B 的内容安全策略中的路径应为 站点 A 的 url。

参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors#sources

© www.soinside.com 2019 - 2024. All rights reserved.