如何允许使用亚马逊托管的网站被嵌入到iFrame中?

4

我对AWS并不熟悉,这可能与站点结构或不同的网络托管商之间的复杂性有关。

我过去使用HostMonster托管网站,并能够允许从另一个域引用该站点中的iFrame。这是通过向x-frame-options添加ALLOW-FROM选项实现的。

该网站最近移至AWS。它正在使用S3、EC2和Elastic Beanstalk。现在,当我尝试嵌入该网站时,我会收到以下错误消息:

拒绝在框架中显示 'http://example.com',因为它将“X-Frame-Options”设置为'SAMEORIGIN'。

看起来很明显我需要设置此选项,但我不清楚如何实现。

我找到了这个寻求支持X-Frame-Options的论坛。 AWS支持团队的回复确认,S3目前不支持X-Frame-Options。

这是否意味着我的情况不妙还是我走错了路?

我还查阅了aws CORS header setting docs,尝试允许我嵌入的来源,甚至尝试允许所有来源进行测试。
此外,我发现了GitHub for making S3 files public。我实施了他们设置的策略和配置,但仍然遇到相同的错误。
如果我漏掉了重要的任何内容,请问我。就像我说的,我非常新于Web开发,并且仍在摸索中。 编辑: 正如所指出的那样,返回具有X-Frame-Options标头的响应确实很有趣。当我直接加载页面时,这是我收到的完整响应。

连接:保持连接

内容类型:文本/HTML; 字符集=utf-8

日期:2016年6月19日,格林威治标准时间00:31:37

服务器:Apache/2.4.16 (Amazon) OpenSSL/1.0.1k-fips mod_wsgi/3.5 Python/2.7.10

传输编码:分块

X-Frame-Options:SAMEORIGIN


你也在猜测。不要猜测。当你加载网站时,请查看响应标头,而不是在iframe中。Refused to display 'http://example.com' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.这个错误似乎意味着标头已经被设置了,所以第一个问题是“真的吗?”和“怎么做到的?” - Michael - sqlbot
有趣的观点。我猜那应该是好消息,意味着它被支持了,只是我不知道如何配置它。我已经把响应头作为原问题的编辑发布了。 - mkatic
1
所以,这就是 EC2,您可以基本上做任何需要的事情。限制仅适用于 S3。 - Michael - sqlbot
我对这里的架构还不是完全清楚。在另一个开发人员配置好一切之后,我接手了这个网站。我可以看到我们有几个在EC2上运行的实例,但我也看到了一个名为该网站名称的S3存储桶。 - mkatic
@mkatic,请告诉我在哪里可以应用.ebextensions中的更改,我非常感激。 - Farzad Salimi Jazi
1个回答

0

您需要在.ebextensions中包含enable_mod_deflate.conf文件,并设置“Header always unset X-Frame-Options”:

enable_mod_deflate.conf

# mod_deflate configuration
<IfModule mod_deflate.c>
  <IfModule mod_headers.c>
   # Make surei proxies don't deliver the wrong content
   Header always unset X-Frame-Options  
  </IfModule>
</IfModule>

2
我在哪里可以找到 enable_mod_deflate.conf 文件? - Farzad Salimi Jazi
2
.ebextensions在哪里? - Farzad Salimi Jazi
我有EC2,但没有Elastic Beanstalk,这也可以使用吗? - Farzad Salimi Jazi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接