Pregunta:
Intenté hacer un iframe con una página de drupal pero recibí el siguiente mensaje:
Múltiples "Se negó a mostrar (dirección de página) en un marco porque estableció 'X-Frame-Options' en 'SAMEORIGIN'".
Luego, intenté cambiar el encabezado de respuesta en el controlador de página usando
$response->headers->set('X-Frame-Options', 'GOFORIT');
Y recibí el siguiente mensaje
Se encontraron varios encabezados 'X-Frame-Options' con valores en conflicto ('GOFORIT, SAMEORIGIN') al cargar '(dirección de la página)'. Volviendo a 'DENY'.
El núcleo de Drupal coloca el siguiente código en todas las respuestas.
$response->headers->set('X-Frame-Options', 'SAMEORIGIN', FALSE);
Entonces, ¿cómo puedo anular el encabezado X-Frame-Options para que solo esta respuesta incruste esta página en otros sitios?
Estoy usando Drupal 8.0.0.
Respuesta:
El encabezado X-Frame-Options
parece haber sido agregado a Drupal 8 para evitar click-jacking: https://www.drupal.org/node/2514152
De acuerdo con la notificación anterior, para insertar su sitio Drupal en otros sitios,
se debe agregar un nuevo suscriptor de respuesta que tenga una prioridad más alta que el actual suscriptor de respuesta final (consulte core.services.yml) para sobrescribir o eliminar el encabezado, según el caso de uso
También proporciona un ejemplo de código:
<?php
$path = $request->getPathInfo();
if (strpos($path, '/fb-app/') === 0) {
$request->headers->remove('X-Frame-Options');
}
?>