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>, <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 only provided if the user accessing the document is using a browser supporting X-Frame-Options.
| Header type | Response header |
|---|---|
| Forbidden header name | no |
Syntax
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/
Directives
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- The page cannot be displayed in a frame, regardless of the site attempting to do so.
sameorigin- The page can only be displayed in a frame on the same origin as the page itself. The spec leaves it up to browser vendors to decide whether this option applies to the top level, the parent, or the whole chain, although it is argued that the option is not very useful unless all ancestors are also in the same origin (see bug 725490). Also see Browser compatibility for support details.
allow-from uri- The page can only be displayed in a frame on the specified origin. Note that in Firefox this still suffers from the same problem as
sameorigindid — it doesn't check the frame ancestors to see if they are in the same origin.
Examples
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.
Configuring Apache
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/"
Configuring nginx
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;
Configuring IIS
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>
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
Specifications
| Specification | Title |
|---|---|
| RFC 7034 | HTTP Header Field X-Frame-Options |
Browser compatibility
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
| Desktop | Mobile | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Basic support | Chrome Full support 4 | Edge Full support Yes | Firefox Full support 3.6.9 | IE Full support 8 | Opera Full support 10.5 | Safari Full support 4 | WebView Android Full support Yes | Chrome Android Full support Yes | Edge Mobile Full support Yes | Firefox Android Full support Yes | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |
| ALLOW-FROM | Chrome No support No | Edge Full support Yes | Firefox Full support 18 | IE Full support 8 | Opera ? | Safari No support No | WebView Android ? | Chrome Android ? | Edge Mobile ? | Firefox Android ? | Opera Android ? | Safari iOS No support No | Samsung Internet Android No support No |
| SAMEORIGIN | Chrome
Full support
Yes
| Edge ? | Firefox
Full support
Yes
| IE Full support 8 | Opera
Full support
Yes
| Safari Full support Yes | WebView Android
Full support
Yes
| Chrome Android
Full support
Yes
| Edge Mobile ? | Firefox Android ? | Opera Android
Full support
Yes
| Safari iOS ? | Samsung Internet Android Full support Yes |
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown
- See implementation notes.
- See implementation notes.