From: https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options
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>
or<iframe>
. Sites can use this to avoid clickjacking attacks, by ensuring that their content is not embedded into other sites.
Using X-Frame-Options
There are three possible values for X-Frame-Options:
- The page cannot be displayed in a frame, regardless of the site attempting to do so.
- The page can only be displayed in a frame on the same origin as the page itself.
- The page can only be displayed in a frame on the specified origin.
DENY
SAMEORIGIN
ALLOW-FROM uri
In other words, 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.
Configuring Apache
To configure Apache to send the X-Frame-Options header for all pages, add this to your site's configuration:
Header always append X-Frame-Options SAMEORIGIN
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 your site's Web.config file:
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
Results
When an attempt is made to load content into a frame, and permission is denied by the X-Frame-Options header, Firefox currently renders about:blank into the frame. At some point, an error message of some kind will be displayed in the frame instead.