40

我正在尝试允许某些特定域通过 iframe 访问我的网站

Header set X-Frame-Options ALLOW-FROM https://www.that-site.com

我知道这可以通过将上面的行添加到 Apache 服务器的配置来完成。

这里有两个问题。

1)应该添加哪个配置文件?在 Unix 和 windows 上运行的 apache,如果不是同一个文件

2) 在启用 all-from 的同时,我仍然希望能够从我自己的域中运行一些 iframe。我可以在允许后添加以下行吗?

 Header set X-Frame-Options SAMEORIGIN

或者我应该在全源中添加我自己的域,即

 Header set X-Frame-Options ALLOW-FROM https://www.that-site.com, http://www.my-own-domain.com

真的需要解决这个问题。提前致谢

4

5 回答 5

44
  1. 您可以添加到.htaccess,httpd.confVirtualHost部分
  2. Header set X-Frame-Options SAMEORIGIN这是最好的选择

Allow from URI并非所有浏览器都支持。参考:MDN 上的 X-Frame-Options

于 2013-08-05T12:06:21.983 回答
32

有关错误响应,请参阅X-Frame-Options 标头

您只需将以下行添加到 .htaccess

Header always unset X-Frame-Options
于 2015-02-21T08:57:55.010 回答
3

它为我做了什么,我在 http<VirtualHost *:80>和 https<VirtualHost *:443>虚拟主机块中添加了以下指令:

ServerName your-app.com
ServerAlias www.your-app.com

Header always unset X-Frame-Options
Header set X-Frame-Options "SAMEORIGIN"

这背后的原因是什么?好吧,默认情况下,如果设置,服务器不会重置X-Frame-Options标头,因此我们需要首先始终删除默认值,在我的情况下是DENY,然后使用下一条规则我们将其设置为所需的值,在我的情况下SAMEORIGIN。当然你也可以使用Header set X-Frame-Options ALLOW-FROM ...规则。

于 2019-11-23T14:06:47.200 回答
1

我发现如果httpd服务器中的应用程序有这样的规则“如果X-Frame-Options标头存在并且有一个值,请不要理会它;否则添加标头X-Frame-Options:SAMEORIGIN”然后是httpd.conf mod_headers 规则如“Header always unset X-Frame-Options”是不够的。SAMEORIGIN 值将始终到达客户端。

为了解决这个问题,我添加了两个而不是一个 mod_headers 规则(在最外层的 httpd.conf 文件中):

Header set X-Frame-Options ALLOW-FROM http://to.be.deleted.com early
Header unset X-Frame-Options

第一条规则告诉任何内部请求处理程序,其他代理已负责防止点击劫持,它可以跳过拯救世界的尝试。它以“早期”处理运行。第二条规则去掉了完全不需要的 X-Frame-Options 标头。它以“后期”处理运行。

我还添加了适当的 Content-Security-Policy 标头,以便世界仍然受到保护,但来自受信任站点的多源 Javascript 仍然可以运行。

于 2018-01-24T19:18:36.923 回答
1

这在所有浏览器上都对我有用:

  1. 用我所有的 javascript 创建了一个页面
  2. 在同一台服务器上创建了第二页并使用对象标签嵌入了第一页。
  3. 在我的第三方网站上,我使用了 Object 标签来嵌入第二页。
  4. 在 public_html 文件夹中的原始服务器上创建了一个 .htaccess 文件,并将 Header unset X-Frame-Options 放入其中。
于 2016-12-30T03:15:07.500 回答