- X-Frame-Options
- Examples
- Configuring Apache
- Configuring nginx
- Configuring IIS
- Configuring HAProxy
- Specifications
- Browser compatibility
- See also
- X-Frame-Options
- Syntax
- Directives
- Examples
- Configuring Apache
- Configuring Nginx
- Configuring IIS
- Configuring HAProxy
- Configuring Express
- Specifications
- Browser compatibility
- See also
- Found a content problem with this page?
- MDN
- Support
- Our communities
- Developers
- X-Frame-Options
- Syntax
- Directives
- Examples
- Configuring Apache
- Configuring Nginx
- Configuring IIS
- Configuring HAProxy
- Configuring Express
- Specifications
X-Frame-Options
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. ALLOW-FROM uri The page can only be displayed in a frame on the specified origin.
Examples
Note: Setting the meta tag is useless! For instance, 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 append X-Frame-Options SAMEORIGIN
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
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
Specifications
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.
Feature | Chrome | Firefox | Edge | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic Support | 4.0 | 3.6.9 | (Yes) | 8.0 | 10.50 | 4.0 |
ALLOW-FROM | (No) | 18 | ? | 8.0 | ? | (Yes) |
Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
ALLOW-FROM | ? | ? | ? | ? | ? | ? | ? |
See also
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 , , or . Sites can use this to avoid click-jacking attacks, by ensuring that their content is not embedded into other sites.
The added security is provided only if the user accessing the document is using a browser that supports X-Frame-Options .
Note: The Content-Security-Policy HTTP header has a frame-ancestors directive which obsoletes this header for supporting browsers.
Syntax
There are two possible directives for X-Frame-Options :
X-Frame-Options: DENY X-Frame-Options: SAMEORIGIN
Directives
If you specify DENY , not only will the browser attempt 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.
The page cannot be displayed in a frame, regardless of the site attempting to do so.
The page can only be displayed if all ancestor frames are same origin to the page itself.
ALLOW-FROM origin Deprecated
This is an obsolete directive that no longer works in modern browsers. (Using it will give the same behavior as omitting the header.) Don’t use it. The Content-Security-Policy HTTP header has a frame-ancestors directive which you can use instead.
Examples
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"
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 always;
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
Configuring Express
To configure Express to send the X-Frame-Options header, you can use helmet which uses frameguard to set the header. Add this to your server configuration:
const helmet = require("helmet"); const app = express(); app.use(helmet.frameguard( action: "SAMEORIGIN" >));
Alternatively, you can use frameguard directly:
const frameguard = require("frameguard"); app.use(frameguard( action: "SAMEORIGIN" >));
Specifications
Browser compatibility
BCD tables only load in the browser
See also
Found a content problem with this page?
This page was last modified on Jul 25, 2023 by MDN contributors.
Your blueprint for a better internet.
MDN
Support
Our communities
Developers
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.
X-Frame-Options
Заголовок ответа HTTP X-Frame-Options можно использовать, чтобы указать, следует ли разрешить браузеру отображать страницу в , , или . Сайты могут использовать это, чтобы избежать атак кликджекинга , гарантируя, что их контент не будет встроен в другие сайты.
Дополнительная безопасность предоставляется только в том случае, если пользователь, обращающийся к документу, использует браузер, поддерживающий X-Frame-Options .
Примечание. HTTP -заголовок Content-Security-Policy содержит директиву frame-ancestors , которая делает этот заголовок устаревшим для поддержки браузеров.
Syntax
Для X-Frame-Options есть две возможные директивы :
X-Frame-Options: DENY X-Frame-Options: SAMEORIGIN
Directives
Если вы укажете DENY , браузер не только будет пытаться загрузить страницу во фрейме, но не только при загрузке с других сайтов, но и при загрузке с того же сайта. С другой стороны, если вы укажете SAMEORIGIN , вы все равно сможете использовать страницу во фрейме, если сайт, включающий ее во фрейм, совпадает с тем, который обслуживает страницу.
Страница не может быть отображена во фрейме,независимо от того,какой сайт пытается это сделать.
Страница может быть отображена только в том случае,если все фреймы-предки имеют одинаковое происхождение с самой страницей.
Это устаревшая директива, которая больше не работает в современных браузерах. (Его использование приведет к тому же поведению, что и отсутствие заголовка.) Не используйте его. HTTP — заголовок Content-Security-Policy содержит директиву frame-ancestors которую вы можете использовать вместо нее.
Examples
Configuring Apache
Чтобы настроить Apache для отправки заголовка X-Frame-Options для всех страниц, добавьте это в конфигурацию вашего сайта:
Header always set X-Frame-Options "SAMEORIGIN"
Чтобы настроить Apache для установки X-Frame-Options DENY, добавьте это в конфигурацию вашего сайта:
Header set X-Frame-Options "DENY"
Configuring Nginx
Чтобы настроить Nginx для отправки заголовка X-Frame-Options , добавьте его в конфигурацию http, server или location:
add_header X-Frame-Options SAMEORIGIN always;
Configuring IIS
Чтобы настроить IIS для отправки заголовка X-Frame-Options , добавьте это в файл Web.config своего сайта :
system.webServer> … httpProtocol> customHeaders> add name="X-Frame-Options" value="SAMEORIGIN" /> customHeaders> httpProtocol> … system.webServer>
Configuring HAProxy
Чтобы настроить HAProxy для отправки заголовка X-Frame-Options , добавьте его в конфигурацию внешнего интерфейса, прослушивания или внутреннего интерфейса:
rspadd X-Frame-Options:\ SAMEORIGIN
Альтернативно,в более новых версиях:
http-response set-header X-Frame-Options SAMEORIGIN
Configuring Express
Чтобы настроить Express для отправки заголовка X-Frame-Options , вы можете использовать шлем, который использует frameguard для установки заголовка. Добавьте это в конфигурацию вашего сервера:
const helmet = require('helmet'); const app = express(); app.use(helmet.frameguard(< action: 'SAMEORIGIN' >));
В качестве альтернативы вы можете использовать frameguard напрямую:
const frameguard = require('frameguard') app.use(frameguard(< action: 'SAMEORIGIN' >))