Allows other sites to open blockscout in iframe

Why:

* For our partners to be able to open BlockScout in an iframe.
* Issue link: n/ah

This change addresses the need by:

* Creating `AllowIframe` plug.
* Editing router to have a new scope for write-only routes and a
separate one for read-only routes which allows for iframes (using the
plug mentioned above).
pull/1168/head
Sebastian Abondano 6 years ago
parent 9d620f2530
commit e7071172e2
  1. 14
      apps/block_scout_web/lib/block_scout_web/plug/allow_iframe.ex
  2. 6
      apps/block_scout_web/lib/block_scout_web/router.ex

@ -0,0 +1,14 @@
defmodule BlockScoutWeb.Plug.AllowIframe do
@moduledoc """
Allows for iframes by deleting the
[`X-Frame-Options` header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options)
"""
alias Plug.Conn
def init(opts), do: opts
def call(conn, _opts) do
Conn.delete_resp_header(conn, "x-frame-options")
end
end

@ -55,8 +55,14 @@ defmodule BlockScoutWeb.Router do
max_complexity: @max_complexity max_complexity: @max_complexity
) )
# Disallows Iframes (write routes)
scope "/", BlockScoutWeb do scope "/", BlockScoutWeb do
pipe_through(:browser) pipe_through(:browser)
end
# Allows Iframes (read-only routes)
scope "/", BlockScoutWeb do
pipe_through([:browser, BlockScoutWeb.Plug.AllowIframe])
resources("/", ChainController, only: [:show], singleton: true, as: :chain) resources("/", ChainController, only: [:show], singleton: true, as: :chain)

Loading…
Cancel
Save