Я сталкиваюсь со следующей проблемой. Веб-сайт внешнего интерфейса (www.domain.com) используется для заполнения формы, принадлежащей бэкенду (backend.domain.com). Эта форма защищена с помощью капчи, а эталонное значение для капчи сохраняется в сеансе пользователя (в PHP).
Представление должно быть на основе Ajax, что создает некоторые проблемы с кросс-доменами. Поэтому я написал небольшой прокси PHP на www.domain.com. Этот прокси-сервер запрашивает форму серверной части. Когда пользователь отправляет форму, Ajax-запрос отправляется прокси-серверу, и прокси-сервер отправляет запрос проверки на сервер и возвращает результат.
Все это работает довольно хорошо, за исключением капчи, которая сохраняет ссылки в пользовательской сессии. Поскольку веб-сайт внешнего интерфейса отправляет форму бэкэнду, бэкэнд будет использовать сеанс для внешнего интерфейса.
Как лучше всего это исправить? Я придумал 2 метода. Первый - включить ссылку на капчу в форму (хешированную), чтобы сеансы не требовались. Другой способ - включить форму непосредственно из бэкэнда, используя iframe. Этот второй метод, вероятно, будет хорошо работать, но он кажется действительно уродливым. Что бы вы предложили для такой ситуации?
Обновление: диаграмма последовательности, описывающая ситуацию:
Client www.domain.com backend.domain.com
| | |
|-------visit site---------->| |
| |-----get form----->|
| |<----return form---|
|<------return form----------| |
| | |
|-------submit form--------->| |
| |-----submit form-->|
| |<----send reply----|
|<------captcha failed-------| |
v v v