htaccess deny allow all ruby iframe sinatra x-frame-options

ruby - deny - ¿Cómo hago para que Sinatra se abstenga de agregar el encabezado X-Frame-Options?



x-frame-options php (6)

Creo que encontré una buena manera de manejar esto, pero me gustaría recibir comentarios

El objetivo es deshabilitar las opciones de X-Frame solo para una ruta para mantener todos los beneficios de protección de rack:

app.get''/hello_world'' do headers({ ''X-Frame-Options'' => '''' }) "HELLO WORLD" end

Creo que esta es una buena opción, ya que parece evitar que la protección de rack agregue el encabezado SAMEORIGIN en esta ruta

Estoy usando Sinatra para devolver algunos contenidos de IFRAME, y me gustaría permitir src entre dominios. Lamentablemente, Sinatra agrega automáticamente un encabezado X-Frame-Options a mi respuesta. ¿Cómo apago eso?


En realidad, la solución dada por @matt todavía está funcionando con Sinatra v1.4.5.

Sí, Sinatra está usando Rack::Protection y de acuerdo con la configuración de protección de ataque

usted puede desactivar la protección en absoluto (que no se recomienda):

disable :protection

o solo desactivar frame_options:

set :protection, :except => :frame_options

Aparte de eso, si su problema no se debe a X-Frame-Options , puede ser Access-Control-Allow-Origin , entonces lo que tiene que hacer es agregar la línea siguiente a su ruta antes de la declaración de devolución:

response[''Access-Control-Allow-Origin''] = ''http://www.example.com/''


La respuesta "set: protection,: except =>: frame_options" no funcionó para mí, usando Sinatra-1.3.3

Tuve que hackear una solución; Puse este mutha en mi archivo config.ru. Obvs puedes cambiar el encabezado para que sea lo que quieras.

config.ru

class Rack::Protection::FrameOptions def header @header ||= {} end end


Ninguna de las opciones presentadas aquí funcionó para mi aplicación sinatra. Terminé agregando un filtro posterior para modificar el encabezado X-Frame-Options para permitir que Facebook encuadre la aplicación.

after do headers({ ''X-Frame-Options'' => ''ALLOW-FROM apps.facebook.com'' }) end


Otra solución, y la que terminé en producción, incluye el parche de monos Rack::Protection::FrameOptions :

# This monkeypatch is needed to ensure the X-Frame-Options header is # never set by rack-protection. module Rack module Protection class FrameOptions < Base def call(env) status, headers, body = @app.call(env) [status, headers, body] end end end end


Sinatra usa Rack::Protection , en particular la opción frame_options , que es lo que establece el encabezado X-Frame-Options .

Puede configurar qué protecciones se usan . Sinatra enciende la mayoría de ellos de manera predeterminada (algunos solo están habilitados si también está utilizando sesiones, y Rack :: Protection en sí mismo no habilita algunos de manera predeterminada).

Para evitar enviar el encabezado X-Frame-Options , necesita deshabilitar frame_options como este:

set :protection, :except => :frame_options