X-Frame-Options header
Note:For more comprehensive options than offered by this header, see theframe-ancestors directive in aContent-Security-Policy header.
The HTTPX-Frame-Optionsresponse 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 avoidclickjacking attacks and somecross-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 theframe-ancestors CSP directive), then the browser will allow other sites to embed this document.
| Header type | Response header |
|---|
In this article
Syntax
X-Frame-Options: DENYX-Frame-Options: SAMEORIGINDirectives
DENYThe document cannot be loaded in any frame, regardless of origin (both same- and cross-origin embedding is blocked).
SAMEORIGINThe document can only be embedded if all ancestor frames have the sameorigin as the page itself.
ALLOW-FROM originDeprecatedThis is an obsolete directive. Modern browsers that encounter response headers with this directive will ignore the header completely. The
Content-Security-PolicyHTTP header has aframe-ancestorsdirective which you should use instead.
Examples
Warning:SettingX-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 theX-Frame-Options header for all pages, add this to your site's configuration:
Header always set X-Frame-Options "SAMEORIGIN"To configure Apache to setX-Frame-Options toDENY, add this to your site's configuration:
Header set X-Frame-Options "DENY"Configuring Nginx
To configure Nginx to send theX-Frame-Options header, add this either to your http, server or location configuration:
add_header X-Frame-Options SAMEORIGIN always;You can set theX-Frame-Options header toDENY using:
add_header X-Frame-Options DENY always;Configuring IIS
To configure IIS to send theX-Frame-Options header, add this to your site'sWeb.config file:
<system.webServer> … <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="SAMEORIGIN" /> </customHeaders> </httpProtocol> …</system.webServer>For more information, see theMicrosoft support article on setting this configuration using the IIS Manager user interface.
Configuring HAProxy
To configure HAProxy to send theX-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 setX-Frame-Options toSAMEORIGIN usingHelmet add the following to your server configuration:
import helmet from "helmet";const app = express();app.use( helmet({ xFrameOptions: { action: "sameorigin" }, }),);Specifications
| Specification |
|---|
| HTML> # the-x-frame-options-header> |