Как отобразить страницу Rails приложения внутри iframe?

Мне нужно отобразить свою страницу, которая является частью приложения, на другой странице этого приложения внутри iframe

Например. У меня есть страница /customers и страница /invoices (оба actions - #index). На странице /invoices есть iframe с src = 'http://localhost:3000/customers'

Как заставить это правильно работать (и в прод. окружении тоже, т.е. example.com/invoices должен отображать example.com/customer внутриiframe)?

Я уже пробовал различные решения со StackOverflow:

  • Response.headers.delete ('X-Frame-Options') внутри CustomerController#indexbefore_action, и after_action, и прям внутри экшна)
  • Установить
    config.action_dispatch.default_headers = {'X-Frame-Options' => 'ALLOWALL'}

  • Удалить заголовки на уровне ApplicationController, как в CustomerController
  • Установить response.headers ['X-Frame-Options'] = 'ALLOWALL'


Но ничего не работает. Каждый раз я получаю localhost refused to connect в Chrome и Firefox Can’t Open This Page в Firefox.

Также не работает с относительным путем, например iframe src = '/customers'
  • Вопрос задан
  • 329 просмотров
Решения вопроса 1
@Fean0r Автор вопроса
В итоге проблема была в том, что в хедере http запроса рельсы добавляли frame-ancestors: 'none'

Залез в конфиг и изменил
SecureHeaders::Configuration.default do |config|
  config.csp = {
    ...
    frame_ancestors:         %w['self'], # Replaced from frame_ancestors: %w['none'],
    ...
  }
end


Теперь все исправно работает, в т.ч. и на localhost
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы