X-Frame-Options

X-Frame-Options HTTP 响应头可以用来指示浏览器是否允许在 <frame><iframe><embed><object> 中渲染页面。网站可以使用它来避免 点击劫持 攻击,方法是确保其内容不会嵌入到其他网站中。

只有当访问文档的用户使用支持 X-Frame-Options 的浏览器时,才会提供额外的安全性。

警告: Content-Security-Policy HTTP 头有一个 frame-ancestors 指令,该指令 已弃用 支持浏览器的此头文件。

头文件类型 响应头
禁止的头文件名称

语法

X-Frame-Options 有两个可能的指令

http
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN

指令

如果您指定 DENY,那么当从其他网站加载页面时,浏览器不仅会尝试在框架中加载页面失败,而且从同一网站加载页面时,尝试也会失败。另一方面,如果您指定 SAMEORIGIN,则只要包含它的网站与提供页面的网站相同,您仍然可以在框架中使用页面。

DENY

无论尝试执行此操作的站点是什么,该页面都无法在框架中显示。

SAMEORIGIN

只有当所有祖先框架与页面本身具有相同来源时,才能显示该页面。

ALLOW-FROM origin 已弃用

这是一个已弃用的指令。遇到包含此指令的响应头的现代浏览器将完全忽略该头文件。 Content-Security-Policy HTTP 头文件有一个 frame-ancestors 指令,您应该使用它代替。

示例

警告:<meta> 元素中设置 X-Frame-Options(例如,<meta http-equiv="X-Frame-Options" content="deny">)无效,不应使用!X-Frame-Options 仅通过 HTTP 头文件强制执行,如下面的示例所示。

配置 Apache

要配置 Apache 为所有页面发送 X-Frame-Options 头文件,请将其添加到您网站的配置中

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

要配置 Apache 将 X-Frame-Options 设置为 DENY,请将其添加到您网站的配置中

apacheconf
Header set X-Frame-Options "DENY"

配置 Nginx

要配置 Nginx 发送 X-Frame-Options 头文件,请将其添加到您的 http、server 或 location 配置中

nginx
add_header X-Frame-Options SAMEORIGIN always;

您可以使用以下方法将 X-Frame-Options 头文件设置为 DENY

nginx
add_header X-Frame-Options DENY always;

配置 IIS

要配置 IIS 发送 X-Frame-Options 头文件,请将其添加到您网站的 Web.config 文件中

xml
<system.webServer><httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
    </customHeaders>
  </httpProtocol></system.webServer>

有关更多信息,请参见 Microsoft 支持文章,了解如何使用 IIS Manager 用户界面设置此配置。

配置 HAProxy

要配置 HAProxy 发送 X-Frame-Options 头文件,请将其添加到您的前端、监听或后端配置中

rspadd X-Frame-Options:\ SAMEORIGIN

或者,在新版本中

http-response set-header X-Frame-Options SAMEORIGIN

配置 Express

您可以使用 Helmet 来配置 Express 应用程序 在旧浏览器上设置 旧版 X-Frame-Options 头文件。

警告: 建议使用 Content-Security-Policy HTTP 头文件以及 frame-ancestors 指令代替。

要使用 Helmet 设置 X-Frame-Options,请将以下内容添加到您的服务器配置以设置 SAMEORIGIN 指令

js
const helmet = require("helmet");
const app = express();
app.use(
  helmet({
    xFrameOptions: { action: "sameorigin" },
  }),
);

规范

规范
HTML 标准
# the-x-frame-options-header

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅