Я просто хотел включить сюда обновленный ответ для всех, кто найдет эту ссылку, пытаясь выяснить, как разрешить встраивание вашего Rails-приложения в I-Frame и столкнуться с проблемами.
На момент написания этой статьи, 28 мая 2020 года, изменения X-Frame-Options, вероятно, не являются вашим лучшим решением вашей проблемы. Опция «РАЗРЕШИТЬ-ОТ» полностью запрещена всеми основными браузерами.
Современное решение - реализовать Content-Security-Policy и установить политику frame_ancestors. Ключ frame_ancestors указывает, какие домены могут встраивать ваше приложение в качестве iframe. В настоящее время он поддерживается основными браузерами и отменяет ваши параметры X-Frame. Это позволит вам предотвратить кликджекинг (с которым X-Frame-Options изначально должен был помочь до того, как он стал устаревшим) и заблокировать ваше приложение в современной среде.
Вы можете настроить Content-Security-Policy с Rails 5.2 в инициализаторе (пример ниже), а для Rails <5.2 вы можете использовать гем, такой как гем Secure Headers: https://github.com/github/secure_headers
Вы также можете переопределить спецификации политики для контроллера / действия, если хотите.
Content-Security-Policies отлично подходят для расширенной защиты. Ознакомьтесь со всем, что вы можете настроить, в документации Rails: https://edgeguides.rubyonrails.org/security.html
Пример Rails 5.2 для Content-Security-Policy:
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