I am using Sinatra to return some IFRAME contents, and I'd like to allow cross-domain src. Unfortunately, Sinatra is automatically adding an X-Frame-Options header to my response. How do I turn that off?
相关问题
- how to get selected text from iframe with javascri
- How to specify memcache server to Rack::Session::M
- Why am I getting a “C compiler cannot create execu
- reference to a method?
- ruby 1.9 wrong file encoding on windows
相关文章
- iframe的里内容看不到,但却点得到
- Ruby using wrong version of openssl
- Difference between Thread#run and Thread#wakeup?
- how to call a active record named scope with a str
- “No explicit conversion of Symbol into String” for
- Segmentation fault with ruby 2.0.0p247 leading to
- How to detect if an element exists in Watir
- uninitialized constant Mysql2::Client::SECURE_CONN
Actually, the solution given by @matt is still working with Sinatra v1.4.5.
Yes, Sinatra is using Rack::Protection and according to Configuring attack protection
you could either disable protection at all (which is not recommended):
or only disable frame_options:
Other than that, if your problem is not because of X-Frame-Options, it may be Access-Control-Allow-Origin, then what you have to do is to add below line to your route before the return statement:
The "set :protection, :except => :frame_options" answer did not work for me, using Sinatra-1.3.3
I had to hack a solution; I put this mutha in my config.ru file. Obvs you can change the header to be anything you want.
config.ru
Another solution, and the one I ended up with in production, involves monkey-patching
Rack::Protection::FrameOptions
:I think I found a good way to handle this but would welcome feedback
The goal is to disable the X-Frame-Options just for one route to keep all the rack protection benefits:
I believe this is a good option as it seems to prevent the rack protection from adding the SAMEORIGIN header on this one route
Neither of the options presented here worked for my sinatra app. I ended up adding an after filter to modify the
X-Frame-Options
header to allow the app to be framed in by Facebook.Sinatra uses Rack::Protection, in particular the
frame_options
option, which is what is setting theX-Frame-Options
header.You can configure which protections are used. Sinatra turns most of them on by default, (some are only enabled if you also are using sessions, and Rack::Protection itself doesn't enable some by default).
To prevent sending the
X-Frame-Options
header you need to disableframe_options
like this: