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 the document in a <frame>, <iframe>, <embed> or <object>. Sites can use this to avoid clickjacking attacks and some cross-site leaks, by ensuring that their content is not embedded into other sites.

If this header is not sent, and the website has not implemented any other mechanisms to restrict embedding (such as the frame-ancestors CSP directive), then the browser will allow other sites to embed this document.

Header type Response header

Syntax

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

Directives

DENY

The document cannot be loaded in any frame, regardless of origin (both same- and cross-origin embedding is blocked).

SAMEORIGIN

The document can only be embedded if all ancestor frames have the same origin as the page itself.

ALLOW-FROM origin

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>

For more information, see the Microsoft support article on setting this configuration using the IIS Manager user interface.

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 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

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
Chrome – Full support
Chrome 4 (Release date: 2010-01-25)
footnote Full support
Edge – Full support
Edge 12 (Release date: 2015-07-29)
footnote Full support
Firefox – Full support
Firefox 4 (Release date: 2011-03-22)
footnote Full support
Opera – Full support
Opera 10.5 (Release date: 2010-03-02)
footnote Full support
Safari – Full support
Safari 4 (Release date: 2009-06-08)
footnote Full support
Chrome Android – Full support
Chrome Android 18 (Release date: 2012-06-27)
footnote Full support
Firefox for Android – Full support
Firefox for Android 4 (Release date: 2011-03-29)
footnote Full support
Opera Android – Full support
Opera Android 14 (Release date: 2013-05-21)
footnote Full support
Safari on iOS – Full support
Safari on iOS 3.2 (Release date: 2010-04-03)
footnote Full support
Samsung Internet – Full support
Samsung Internet 1 (Release date: 2013-04-27)
footnote Full support
WebView Android – Full support
WebView Android 4.4 (Release date: 2013-12-09)
footnote Full support
WebView on iOS – Full support
WebView on iOS 3.2 (Release date: 2010-04-03)
footnote Full support
SAMEORIGIN
Chrome – Full support
Chrome 4 (Release date: 2010-01-25)
footnote
footnote Starting in Chrome 61, this applies to all of a frame's ancestors.
Edge – Full support
Edge 12 (Release date: 2015-07-29)
footnote Full support
Firefox – Full support
Firefox 4 (Release date: 2011-03-22)
footnote
footnote Starting in Firefox 59, this applies to all of a frame's ancestors.
Opera – Full support
Opera 15 (Release date: 2013-07-02)
footnote
footnote Starting in Opera 48, this applies to all of a frame's ancestors.
Safari – Full support
Safari 4 (Release date: 2009-06-08)
footnote Full support
Chrome Android – Full support
Chrome Android 18 (Release date: 2012-06-27)
footnote
footnote Starting in Chrome Android 61, this applies to all of a frame's ancestors.
Firefox for Android – Full support
Firefox for Android 4 (Release date: 2011-03-29)
footnote
footnote Starting in Firefox for Android 59, this applies to all of a frame's ancestors.
Opera Android – Full support
Opera Android 14 (Release date: 2013-05-21)
footnote
footnote Starting in Opera Android 45, this applies to all of a frame's ancestors.
Safari on iOS – Full support
Safari on iOS 3.2 (Release date: 2010-04-03)
footnote Full support
Samsung Internet – Full support
Samsung Internet 1 (Release date: 2013-04-27)
footnote
footnote Starting in Samsung Internet 8.0, this applies to all of a frame's ancestors.
WebView Android – Full support
WebView Android 4.4 (Release date: 2013-12-09)
footnote
footnote Starting in WebView Android 61, this applies to all of a frame's ancestors.
WebView on iOS – Full support
WebView on iOS 3.2 (Release date: 2010-04-03)
footnote Full support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
See implementation notes.

See also