Symfony 2 проигрывает сессию внутри iFrame

Я пытаюсь добавить хостинг платежного решения в старый проект Symfony 2.6. Это стандартное размещенное решение, в котором вы встраиваете форму Payment Gateway в iframe, чтобы пользователь мог безопасно отправлять свои данные CC. Когда платеж обработан, Платежный шлюз перенаправляет пользователя обратно на мой сайт с помощью запроса GET и отправляет мне токен оплаты в качестве параметра GET.

Все это происходит внутри iFrame, очевидно, и весь этот процесс работает нормально, за исключением последнего шага.

Когда пользователь перенаправляется обратно на URL моего обратного вызова внутри iframe, Symfony по какой-то причине не распознает сеанс пользователя и перенаправляет пользователя на вход в систему. Я получаю сообщение: security.INFO: Populated SecurityContext with an anonymous Token в журнале. Это происходит только для этого одного звонка, пользователь остается авторизованным на остальной части сайта. Пользовательские логины контролируются fos_userbundle, в стандартной настройке.

URL обратного вызова выглядит следующим образом: http://some.site/foo?paymentToken=12345, и если я введу этот URL-адрес непосредственно в браузере, он работает просто отлично. Даже когда я устанавливаю src iframe непосредственно на этот URL, он загружается нормально. Но когда пользователь 302 перенаправляется обратно на этот URL из платежного шлюза, происходит сбой (с помощью браузера Chrome).

Платежный шлюз использует https, мой сайт использует обычный http, так что я думаю, это как-то связано с переключением уровней безопасности? Но понятия не имею, как это решить.

Поскольку перенаправление происходит со стороннего сервера, я не могу контролировать заголовки или что-либо еще об этом запросе.

ОБНОВЛЕНИЕ: я заметил, что Chrome отправляет заголовок: upgrade-insecure-requests:1, не уверен, что это вызывает проблемы?

0

Решение

Я могу подтвердить, что это не проблема Symfony, а проблема с тем, как Chrome обрабатывает перенаправления с защищенных сайтов на небезопасные (возможно, это ошибка?).

Chrome не отправляет файлы cookie при перенаправлении 302 со страницы https на страницу http, и поэтому пользователь не распознается должным образом. Все отлично работает с Firefox.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector