X-Frame-Options header - HTTP | MDN

archived 30 Nov 2025 03:51:32 UTC
Learn front-end development with high quality, interactive courses from Scrimba

X-Frame-Options header

Note: For more comprehensive options than offered by this header, see the frame-ancestors directive in a Content-Security-Policy header.
The HTTP X-Frame-Options response header can be used to indicate whether a browser should be allowed to render a page in a <frame>, <iframe>, <embed> or <object>. Sites can use this to avoid clickjacking attacks, by ensuring that their content is not embedded into other sites.
The added security is provided only if the user accessing the document is using a browser that supports X-Frame-Options.
Header type Response header

Syntax

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

Directives

DENY
The page cannot be displayed in a frame, regardless of the site attempting to do so. Not only will the browser attempt to load the page in a frame fail when loaded from other sites, attempts to do so will fail when loaded from the same site.
SAMEORIGIN
The page can only be displayed if all ancestor frames have the same origin as the page itself. You can still use the page in a frame as long as the site including it in a frame is the same as the one serving the page.
ALLOW-FROM origin Deprecated
This is an obsolete directive. Modern browsers that encounter response headers with this directive will ignore the header completely. The Content-Security-Policy HTTP header has a frame-ancestors directive which you should use instead.

Examples

Warning: Setting X-Frame-Options inside the <meta> element (e.g., <meta http-equiv="X-Frame-Options" content="deny">) has no effect. X-Frame-Options is only enforced via HTTP headers, as shown in the examples below.

Configuring Apache

To configure Apache to send the X-Frame-Options header for all pages, add this to your site's configuration:
apacheconf
Header always set X-Frame-Options "SAMEORIGIN"
To configure Apache to set X-Frame-Options to DENY, add this to your site's configuration:
apacheconf
Header set X-Frame-Options "DENY"

Configuring Nginx

To configure Nginx to send the X-Frame-Options header, add this either to your http, server or location configuration:
nginx
add_header X-Frame-Options SAMEORIGIN always;
You can set the X-Frame-Options header to DENY using:
nginx
add_header X-Frame-Options DENY always;

Configuring IIS

To configure IIS to send the X-Frame-Options header, add this to your site's Web.config file:
xml
<system.webServer><httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
    </customHeaders>
  </httpProtocol></system.webServer>

Configuring HAProxy

To configure HAProxy to send the X-Frame-Options header, add this to your front-end, listen, or backend configuration:
rspadd X-Frame-Options:\ SAMEORIGIN
Alternatively, in newer versions:
http-response set-header X-Frame-Options SAMEORIGIN

Configuring Express

To set X-Frame-Options to SAMEORIGIN using Helmet​ (external) add the following to your server configuration:
js
import helmet from "helmet";

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

Specifications

Specification
HTML
# the-x-frame-options-header​ (external)

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
X-Frame-Options
ALLOW-FROM
Deprecated Non-standard
SAMEORIGIN

Legend

Tip: you can click/tap on a cell for more information.
Full support Full support
No support No support
⁨Non-standard⁩. Check cross-browser support before using.
⁨Deprecated⁩. Not for use in new websites.
See implementation notes.

See also

Help improve MDN

Learn how to contribute
This page was last modified on by MDN contributors.
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%