Por qué un iframe muestra "rechazó la conexión": X-Frame-Options o CSP frame-ancestors en la página enmarcada. Pega sus cabeceras de respuesta para ver el veredicto y copia la solución para el servidor.
El recuadro gris de "rechazó la conexión" significa que la página dentro de tu iframe le dijo al navegador que no se deja enmarcar. Lo hace con una cabecera de respuesta X-Frame-Options (DENY o SAMEORIGIN) o con una regla frame-ancestors de Content-Security-Policy. Solo el servidor del sitio enmarcado puede quitarla. Pega sus cabeceras abajo para ver qué regla te bloquea.
Qué significa cada valor de cabecera para tu iframe
Este error no es un fallo de red y tu etiqueta iframe no tiene nada mal. El navegador descargó la página, leyó una cabecera que prohíbe enmarcarla y sustituyó el contenido por un error. El motivo es la protección contra clickjacking: una página que cualquiera puede enmarcar puede cubrirse con botones invisibles. La solución depende de qué servidor envió la cabecera.
No. La regla la aplica el navegador del visitante en nombre del sitio enmarcado, y ningún atributo de tu iframe puede anularla. Las únicas vías son cambiar las cabeceras del sitio enmarcado, usar una URL para insertar que el sitio ofrezca para iframes o enlazar hacia fuera.
Comprueba si hay X-Frame-Options: DENY o frame-ancestors 'none'. Ambas bloquean a cualquier página padre, incluidas las del mismo dominio. Cambia a SAMEORIGIN o frame-ancestors 'self'. Recuerda que un subdominio o un puerto distinto es un origen distinto.
Usa frame-ancestors, porque puede listar varias páginas padre permitidas y gana siempre que ambas están presentes. Si también envías X-Frame-Options, mantenla coherente con la regla CSP para no confundir a la próxima persona que lea la configuración.
La página normal de reproducción o del lugar suele enviar una cabecera contra el enmarcado, mientras que el servicio publica una dirección aparte para insertar pensada para iframes, a menudo en Compartir y luego Insertar. Nuestro generador de código para insertar convierte los enlaces compatibles en esas direcciones por ti.
Sí. Si tu iframe está dentro de otro iframe, todos los ancestros hasta la página superior deben cumplir la política, no solo el padre directo.
Cada ejemplo permite el mismo sitio más un sitio asociado. Sustituye https://partner.example por el origen que debe poder enmarcarte, o usa 'none' para bloquear a todos.
always mantiene la cabecera también en las páginas de error. Elimina cualquier línea antigua de X-Frame-Options para que las dos reglas no se desincronicen.
Necesita mod_headers. Header always set sustituye cualquier valor anterior de la misma cabecera.
Helmet establece X-Frame-Options en SAMEORIGIN por defecto. Desactivarlo y definir frame-ancestors mantiene una única fuente de verdad.
headers() añade cabeceras de respuesta a cada ruta que coincide. Las plataformas de hosting pueden añadir las suyas, así que revisa después la respuesta en vivo.
Pega las cabeceras de respuesta de la página que va dentro del iframe. Todo se ejecuta en esta página; no se descarga nada.
Cabeceras de respuesta de la página enmarcada
Origen de la página que contiene el iframe
Origen de la página enmarcada
Restaurar las cabeceras de ejemplo
Veredicto
Esta página padre puede enmarcar la página.
El navegador se negará a mostrar esta página en el iframe.
Todavía no hay un veredicto claro.
Bloqueado por Content-Security-Policy: frame-ancestors 'none'.
Permitido por frame-ancestors: {v} coincide con el origen padre.
Bloqueado por frame-ancestors: ninguna fuente de la lista coincide con {v}.
X-Frame-Options está presente pero se ignora, porque decide frame-ancestors.
Bloqueado por X-Frame-Options: DENY.
Permitido por X-Frame-Options: SAMEORIGIN, y los orígenes coinciden.
Bloqueado por X-Frame-Options: SAMEORIGIN, y {v} es un origen distinto.
ALLOW-FROM está obsoleto y se ignora, así que no bloquea.
X-Frame-Options tiene varios valores distintos. Envía exactamente uno.
Content-Security-Policy-Report-Only nunca bloquea; se ha omitido.
No se encontró ninguna cabecera contra el enmarcado, así que cualquier sitio puede enmarcar esta página.
Introduce ambos orígenes como URL completas, por ejemplo https://example.com.
Empieza gratis · Sin tarjeta de crédito