拒绝在框架中连接“https://s3.console.aws.amazon.com/”,因为 AWS 将“X-Frame-Options”设置为“拒绝”

时间:2021-04-01 20:44:19

标签: amazon-s3 frame content-security-policy x-frame-options

我目前只使用 AWS S3 Bucket 来显示我的一些 HTML 画布动画,直到我为使用名为 Celtra 的提要版本的广告平台创建 iFrame 之前从未遇到过问题。

我尝试了 ?embed=true 和 target="_blank" 在另一个问题中提到的策略是 SAMEDOMAIN,不出所料,两者都不起作用。

我是否需要使用创建对象 Lambda 访问点?根据 Mozilla 的说法,DENY 和 SAMEORIGIN 是唯一的选择。

允许来自 uri 这是一个过时的指令,不再适用于现代浏览器。不要使用它。在支持旧版浏览器时,页面只能在指定的源 uri 上显示在框架中。请注意,在旧版 Firefox 实现中,这仍然遇到与 SAMEORIGIN 相同的问题——它不检查框架祖先以查看它们是否来自同一来源。 Content-Security-Policy HTTP 标头有一个 frame-ancestors 指令,您可以使用它来代替。

1 个答案:

答案 0 :(得分:1)

  1. 是的,您必须使用 Lambda@Edge func 将自定义 HTTP 响应标头添加到 AWS S3 存储桶。
    但从 this topicthis onethis doc 来看,AWS 不会自行添加 X-Frame-Options 标头。因此,不应在 iframe 中阻止您的 HTML 画布动画。

  2. 如果您希望允许在多个位置使用 iframe,X-Frame-Options 不够灵活。将 Conrent-Security-Policy (CSP) HTTP 标头与 frame-ancestors 指令结合使用。

    Conrent-Security-Policy: frame-ancestors *;

    将允许在任何位置进行 iframe,而

    Conrent-Security-Policy: frame-ancestors example.com friends.com;

    允许嵌入页面 仅在 example.comfriends.com 站点中发布了此标头。

更新

带有允许嵌入 iframe 的域白名单的 HTTP 标头:

`Conrent-Security-Policy: frame-ancestors example.com friends.com allowed_site.net`

必须由您的 s3.console.aws.amazon.com/s3/buckets/advancedbanners 页面发布。此页面应授予嵌入自身的权限。

我不确定您是否可以在没有 Lambda@Edge func 的情况下在 AWS S3 上发布 CSP 标头。您必须完全使用 HTTP 标头,因为 frame-ancestors 元标记中不支持 <meta http-equiv="Conrent-Security-Policy" content=" directives_here ">

并且您必须找到一种方法来停止在 AWS S3 上发布 X-Frame-Options(XFO) 标头,因为 Safari bug - XFO 并没有因支持 CSP 而过时。