El navegador impide que Discourse se renderice en iframe a pesar de la configuración adecuada (`X-Frame-Options: SAMEORIGIN`)

Hola a todos:

Tenemos una instancia de Discourse incrustada en un iframe dentro de nuestra aplicación, y funciona bien tal cual. Sin embargo, cuando un usuario no autenticado intenta acceder a una página a la que no tiene acceso (ya sea porque no existe o porque está restringida por grupo), la respuesta ahora incluye misteriosamente X-Frame-Options: SAMEORIGIN y los navegadores bloquean la representación del frame.

He comprobado en diferentes versiones, comenzando con la versión estable 3.3.1 hasta casi la última versión de vanguardia (la última probada a mediados de la semana pasada).

Se está ejecutando en un subdominio diferente al de la aplicación principal y está configurado para incrustarse con allow_embedding_site_in_an_iframe: true. Al depurar una instancia limpia, noté que en tal caso, el método conditionally_allow_site_embedding en ApplicationController no se llama, dejando así la cabecera en la respuesta (enlace de GH), y rastreándolo hasta lanzar una excepción en algún momento, interrumpiendo así el flujo.

Reproducción:

  1. Ejecuta una instancia limpia de Discourse (o cualquier instancia en realidad, esto sucedió en entornos locales, de prueba y de producción) y configúrala con allow_embedding_site_in_an_iframe: true.
  2. Incrusta en un iframe en un sitio web servido a través de HTTPS usando una ruta inexistente para activar un error 404.

Esperado: El navegador permite que Discourse se represente.
Real: El navegador impide que Discourse se represente debido a la presencia de X-Frame-Options: SAMEORIGIN en la respuesta.

Nota: Se está ejecutando a través de un Cloudflare solo de DNS y hemos intentado eliminar la cabecera en modo proxy, sin embargo, no podemos ponerlo en modo proxy debido a que CF filtra las cookies que son necesarias para nuestra implementación personalizada de SSO, por lo que esta no es una opción para nosotros en este momento.