X-Frame-Options 响应头

注意:对于比此标头提供的选项更全面的选项,请参阅 Content-Security-Policy 标头中的 frame-ancestors 指令。

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

只有在使用支持 X-Frame-Options 的浏览器访问文档时,才能提供附加的安全保障。

头类型 响应头
禁止请求头

语法

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

指令

DENY

页面无法在框架中显示,无论尝试这样做的网站是哪个。不仅浏览器尝试从其他网站加载页面到框架中会失败,从同一网站加载也会失败。

SAMEORIGIN

只有当所有祖先框架与页面本身具有相同的时,才能显示页面。只要将页面包含在框架中的网站与提供该页面的网站相同,您仍然可以在框架中使用该页面。

ALLOW-FROM origin 已废弃

这是一个过时的指令。遇到带有此指令的响应头的现代浏览器将完全忽略该标头。HTTP Content-Security-Policy 标头有一个 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

要使用 HelmetX-Frame-Options 设置为 SAMEORIGIN,请将以下内容添加到您的服务器配置中

js
import helmet from "helmet";

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

规范

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

浏览器兼容性

另见