X-Frame-Options
La cabecera original contra el clickjacking. Un servidor la añade a la respuesta para indicar al navegador si ese documento puede renderizarse dentro de <frame>, <iframe>, <embed> u <object>.
DENYNunca en un frame, ni siquiera por el mismo sitio.
SAMEORIGINSolo en páginas del mismo origen.
ALLOW-FROM uriObsoleto. Ignorado por los navegadores modernos — usa CSP.
HTTP/2 200
X-Frame-Options: SAMEORIGINContent-Security-Policy: frame-ancestors
El sustituto moderno. Admite una lista de orígenes padre permitidos, comodines y esquemas. Cuando ambas cabeceras están presentes, los navegadores que soportan frame-ancestors ignoran X-Frame-Options.
Content-Security-Policy: frame-ancestors 'self' https://*.partner.comContent-Security-Policy: frame-ancestors 'none'Fíjate en la directiva espejo: frame-src en tu página controla qué URLs puedes insertar. Si el embed funciona en Iframe Viewer pero no en tu sitio, revisa primero tu propio CSP.
Flags de sandbox
Un atributo sandbox vacío elimina todas las capacidades. Devuelve los tokens uno a uno.
| Token | Concede |
|---|---|
| allow-scripts | Permite que la página ejecute JavaScript. |
| allow-same-origin | Conserva el origen de la página (cookies, storage). Con scripts, anula el sandbox para contenido del mismo origen. |
| allow-forms | Permite enviar formularios. |
| allow-popups | Permite window.open y target=_blank. |
| allow-popups-to-escape-sandbox | Las ventanas abiertas no tienen sandbox. |
| allow-modals | alert(), confirm(), prompt(), print(). |
| allow-top-navigation | Permite que el frame navegue tu página. |
| allow-top-navigation-by-user-activation | Navegación superior solo tras un clic/toque. |
| allow-downloads | Permite descargas iniciadas por el frame. |
| allow-presentation | Presentation API (transmisión). |
| allow-pointer-lock | Pointer Lock API (juegos). |
| allow-orientation-lock | Bloqueo de orientación de pantalla. |
Permissions Policy (allow)
Mientras sandbox elimina capacidades, allow delega funciones potentes al frame. Cada entrada es un nombre de función, opcionalmente seguido de una lista de orígenes.
<iframe
src="https://player.example.com/v/123"
allow="fullscreen; autoplay; picture-in-picture; clipboard-write"
allowfullscreen
></iframe>¿Qué sitios permiten iframes?
La base que usa el probador. Valores observados — pueden cambiar sin aviso; confirma con el comando curl antes de publicar.
| Dominio | Iframe | Cabecera / alternativa |
|---|---|---|
| google.com | Bloqueado | X-Frame-Options: SAMEORIGINGoogle Maps and YouTube expose dedicated /embed endpoints instead. |
| youtube.com | Bloqueado | X-Frame-Options: SAMEORIGINUse https://www.youtube.com/embed/VIDEO_ID for embedding. |
| facebook.com | Bloqueado | X-Frame-Options: DENYUse the official Facebook Page/Post plugins. |
| instagram.com | Bloqueado | X-Frame-Options: SAMEORIGINUse instagram.com/p/ID/embed/ for public posts. |
| twitter.com | Bloqueado | X-Frame-Options: DENYUse publish.twitter.com to get a widget snippet. |
| x.com | Bloqueado | X-Frame-Options: DENYUse publish.twitter.com to get a widget snippet. |
| linkedin.com | Bloqueado | X-Frame-Options: SAMEORIGIN |
| github.com | Bloqueado | X-Frame-Options: DENYGists can be embedded via the script snippet on each gist. |
| amazon.com | Bloqueado | X-Frame-Options: SAMEORIGIN |
| netflix.com | Bloqueado | X-Frame-Options: DENY |
| reddit.com | Bloqueado | content-security-policy: frame-ancestors 'self'Use embed.reddit.com for individual posts. |
| stackoverflow.com | Bloqueado | X-Frame-Options: SAMEORIGIN |
| paypal.com | Bloqueado | X-Frame-Options: SAMEORIGIN |
| apple.com | Bloqueado | X-Frame-Options: SAMEORIGIN |
| microsoft.com | Bloqueado | X-Frame-Options: SAMEORIGIN |
| openai.com | Bloqueado | content-security-policy: frame-ancestors 'none' |
| chatgpt.com | Bloqueado | content-security-policy: frame-ancestors 'none' |
| notion.so | Bloqueado | X-Frame-Options: SAMEORIGINPublic pages can be embedded via notion.site links in some tools. |
| figma.com | Bloqueado | X-Frame-Options: SAMEORIGINUse the /embed?embed_host=... URL from Share → Get embed code. |
| wikipedia.org | Permitido | (no framing restriction)Wikipedia allows framing. |
| example.com | Permitido | (no framing restriction) |
| codepen.io | Permitido | (embeds allowed via /embed/ URLs)Use the Embed button on a pen for the canonical snippet. |
| vimeo.com | Bloqueado | X-Frame-Options: SAMEORIGINUse https://player.vimeo.com/video/ID. |
| player.vimeo.com | Permitido | (embed endpoint) |
| open.spotify.com | Bloqueado | X-Frame-Options: SAMEORIGINUse https://open.spotify.com/embed/... URLs. |
| maps.google.com | Bloqueado | X-Frame-Options: SAMEORIGINUse the Share → Embed a map snippet. |
FAQ
¿Por qué el iframe aparece en blanco o dice “rechazó la conexión”?
El sitio envió una cabecera X-Frame-Options (DENY o SAMEORIGIN) o un Content-Security-Policy con frame-ancestors que no incluye tu origen. Los navegadores lo respetan y muestran una página de error. La cabecera exacta se ve en DevTools → Consola o con el comando curl que te da Iframe Viewer.
¿Cómo pruebo si un sitio se puede insertar en un iframe?
Pega la URL en el probador de arriba y pulsa Renderizar. Iframe Viewer la carga en un iframe real al tamaño de dispositivo elegido e informa si la carga funcionó, qué señal decidió el resultado y cuánto tardó.
¿Puede Iframe Viewer leer la cabecera X-Frame-Options directamente?
No solo desde el navegador: las cabeceras de respuesta de otro origen están ocultas para JavaScript por diseño. Iframe Viewer combina comprobaciones deterministas (contenido mixto, base de sitios populares), el evento load del navegador y un sondeo de mismo origen, y siempre indica qué señal produjo el veredicto. Usa el comando curl para la verdad definitiva.
El probador dice “Evento load disparado”, pero sigo viendo una página de error. ¿Cuál tiene razón?
Ambos. Chrome y Firefox disparan load incluso cuando sustituyen por una página de error, así que el evento por sí solo no distingue éxito de bloqueo. Confía en tus ojos para la decisión final y usa curl para confirmar.
¿Iframe Viewer guarda o registra las URLs que pruebo?
No. No hay servidor. Tu historial se guarda en el localStorage del navegador para sobrevivir a recargas y puedes borrarlo con un clic. Analytics, si lo aceptas, solo cuenta vistas y clics — nunca las URLs probadas.
¿Cuál es la diferencia entre allow y sandbox?
sandbox elimina capacidades (scripts, formularios, popups, navegación) y tú devuelves solo lo necesario. allow es la Permissions Policy para funciones potentes como cámara, pantalla completa o pago. Usa ambos para contenido de terceros que no controlas.
¿Por qué mi embed funciona aquí pero no en mi sitio?
Causas comunes: tu página es HTTPS y el destino es HTTP (contenido mixto), el destino comprueba la cabecera Referer, o el Content-Security-Policy de tu propio sitio tiene frame-src sin el destino. Prueba la opción de política de referrer en Opciones del frame.
¿Iframe Viewer es realmente gratis?
Sí — totalmente gratis, sin cuenta, sin límites. Es un sitio estático sin costes de servidor que recuperar.