Pertanyaan Cara mengesampingkan X-Frame-Options untuk controller atau aksi di Rails 4


Rel 4 muncul untuk menetapkan nilai default SAMEORIGIN Untuk X-Frame-Options Header respons HTTP. Ini adalah besar demi keamanan, tetapi tidak memungkinkan sebagian aplikasi Anda tersedia di iframe pada domain yang berbeda.

Anda dapat mengganti nilai X-Frame-Options secara global menggunakan config.action_dispatch.default_headers pengaturan:

config.action_dispatch.default_headers['X-Frame-Options'] = "ALLOW-FROM https://apps.facebook.com"

Tapi bagaimana Anda menimpanya hanya dengan satu pengontrol atau tindakan?


76
2017-08-26 13:50


asal


Jawaban:


Jika Anda ingin menghapus header sepenuhnya, Anda dapat membuat after_action menyaring:

class FilesController < ApplicationController
  after_action :allow_iframe, only: :embed

  def embed
  end

private

  def allow_iframe
    response.headers.except! 'X-Frame-Options'
  end
end

Atau, tentu saja, Anda dapat mengkodekan after_action untuk menetapkan nilai ke sesuatu yang berbeda:

class FacebookController < ApplicationController
  after_action :allow_facebook_iframe

private

  def allow_facebook_iframe
    response.headers['X-Frame-Options'] = 'ALLOW-FROM https://apps.facebook.com'
  end
end

Perhatikan bahwa Anda perlu mengosongkan cache di browser tertentu (Chrome untuk saya) saat melakukan debugging ini.


123
2017-08-26 13:50