The X-Frame-Options
HTTP response header can be used to indicate whether or not a browser should be allowed to render a page in a <frame>
, <iframe>
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 only provided if the user accessing the document is using a browser supporting X-Frame-Options
.
Header type | Response header |
---|---|
Forbidden header name | no |
There are three possible directives for X-Frame-Options
:
X-Frame-Options: deny X-Frame-Options: sameorigin X-Frame-Options: allow-from https://example.com/
If you specify deny
, not only will attempts 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. On the other hand, if you specify sameorigin
, 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.
deny
sameorigin
allow-from uri
sameorigin
did — it doesn't check the frame ancestors to see if they are in the same origin.Note: Setting the meta tag is useless! For instance, <meta http-equiv="X-Frame-Options" content="deny">
has no effect. Do not use it! Only by setting through the HTTP header like the examples below, X-Frame-Options
will work.
To configure Apache to send the X-Frame-Options
header for all pages, add this to your site's configuration:
Header always set X-Frame-Options "sameorigin"
To configure Apache to set the X-Frame-Options
deny , add this to your site's configuration:
Header set X-Frame-Options "deny"
To configure Apache to set the X-Frame-Options
to allow-from
a specific Host , add this to your site's configuration:
Header set X-Frame-Options "allow-from https://example.com/"
To configure nginx to send the X-Frame-Options
header, add this either to your http, server or location configuration:
add_header X-Frame-Options sameorigin;
To configure IIS to send the X-Frame-Options
header, add this to your site's Web.config
file:
<system.webServer> ... <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="sameorigin" /> </customHeaders> </httpProtocol> ... </system.webServer>
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
Specification | Title |
---|---|
RFC 7034 | HTTP Header Field X-Frame-Options |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | 4 | Yes | 3.6.9 | 8 | 10.5 | 4 |
ALLOW-FROM | No | Yes | 18 | 8 | ? | No |
SAMEORIGIN | Yes
|
? | Yes
|
8 | Yes
|
Yes |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
ALLOW-FROM | ? | ? | ? | ? | ? | No | No |
SAMEORIGIN | Yes
|
Yes
|
? | ? | Yes
|
? | Yes |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options