Я просто хотів включити тут оновлену відповідь для кожного, хто знайде це посилання, намагаючись з’ясувати, як дозволити вбудувати вашу програму Rails в I-Frame та зіткнутися з проблемами.
На момент написання цього видання, 28 травня 2020 року, зміни X-Frame-Options, мабуть, не найкраще рішення вашої проблеми. Параметр "ALLOW-FROM" повністю заборонений усіма основними браузерами.
Сучасне рішення полягає у впровадженні політики захисту вмісту та встановленні політики 'frame_ancestors'. Ключ 'frame_ancestors' визначає, які домени можуть вбудовувати вашу програму як iframe. В даний час він підтримується основними браузерами і замінює ваші параметри X-Frame. Це дозволить вам запобігти Clickjacking (який X-Frame-Options спочатку мав допомогти, перш ніж він в основному застарів), і заблокувати ваш додаток у сучасному середовищі.
Ви можете налаштувати Політику безпеки вмісту за допомогою Rails 5.2 в ініціалізаторі (приклад нижче), а для Rails <5.2 ви можете використовувати такий камінь, як самоцвіт Secure Headers: https://github.com/github/secure_headers
Ви також можете замінити специфікації політики на основі контролера / дії, якщо хочете.
Політика щодо вмісту - безпека чудово підходить для вдосконалених засобів захисту. Перегляньте всі речі, які ви можете налаштувати в документації Rails: https://edgeguides.rubyonrails.org/security.html
Приклад Rails 5.2 для політики безпеки вмісту:
Rails.application.config.content_security_policy do |policy|
policy.frame_ancestors :self, 'some_website_that_embeds_your_app.com'
end
Приклад специфічної зміни контролера до політики:
class PostsController < ApplicationController
content_security_policy do |p|
p.frame_ancestors :self, 'some_other_website_that_can_embed_posts.com'
end
end