Мы недавно закончили создание курса электронного обучения для клиента и планируем вскоре его развернуть. У них есть свой собственный веб-сервер со своим доменом, но мы хотели бы, чтобы мы провели хостинг курса на нашей LMS, работающей на Rails, на нашем сервере.Междоменный iframe вызывает проблемы с куки-файлами (Rails)
Курс довольно длинный, поэтому для его приостановки и возобновления требуется регистрация в любое время.
Теперь они также хотели бы, чтобы пользователи посетили свой домен, foo.com, перемещались и запускали курс. Затем страница запуска программы включает нашу страницу в iframe, начиная с app.bar.com.
Это, конечно, вызывает некоторые проблемы с сеансом из-за сторонних файлов cookie и так далее. Я исследовал и нашел множество разных хаков и решений, но пока ничего не получилось.
P3P
-header, как я понимаю, это на самом деле не используется больше, но я добавил фиктивный заголовок, похожий на Facebook и Google. (P3P: CP="This site does not have a p3p policy."
)Я также изучал
CORS
, сAccess-Control-Allow-Credentials: true
, который звучал многообещающе, но ничего не сделал. Возможно, я неправильно сконфигурировал его, но хотел бы знать, возможно ли это, прежде чем инвестировать слишком много времени.Некоторые сайты упоминают, что это работает, если браузер пообщалась с
app.bar.com
ранее, поэтому я попытался загрузки изображения изapp.bar.com
до фрейма, но это было либо недостаточно, либо еще один хак, который позже была исправлена.
Я понимаю, что блокирование сторонних файлов cookie обычно является хорошей вещью для предотвращения отслеживания пользователей. Люди, которые должны пройти курс, поступают со всего мира, и объяснение того, как отключить блокировку файлов cookie сторонних производителей для каждого из них, не является вариантом.
Еще одна вещь, которую я рассматривал, заключалась в получении субдомена от клиента, указывающего на наш сервер, course.foo.com
или что-то подобное, и запрос iframe, запрашивающий оттуда, будет работать. Я хотел бы знать, будет ли это работать первым, прежде чем пытаться получить этот запрос.
Нет необходимости в каком-либо обмене данными между доменами, как полагают большинство других решений JavaScript, за исключением того, что файлы cookie установлены и отправлены на нашу LMS.
У меня есть полный контроль над нашим сервером и при необходимости можно изменить в основном все, что есть. Для клиентского сервера у меня ограниченный доступ к HTML.
EDIT: Только что заметил, что в IE9 по крайней мере он отлично работает с P3P-заголовком.
У меня подобный выпуск. Если я смогу захватить POST без cookie и поделиться ссылкой, чтобы отобразить форму в окне прямо на моем сайте, то это сработает для меня ... (http://stackoverflow.com/questions/29311728/ show-error-message-after-form-post-if-client-browser-doesnt-send-cookie) – user1322092