Ajax-вызов к серверу, защищенному тайм-аутом: проблема перенаправления ajax - PullRequest
0 голосов
/ 30 апреля 2011

Наш веб-сервер использует CAS для единого входа. Сервер CAS работает на сервере JASIG CAS на https://portal.ourdomain.com, а веб-сервер работает на Rails на http://service.ourdomain.com.

Для сервера Rails тайм-аут сеанса установлен на достаточно низкое значение в качестве меры резервного копирования с единым выходом и по другим причинам. Поэтому иногда пользователи перенаправляются на portal.ourdomain.com для повторной аутентификации. Обычно это происходит незаметно, поскольку portal.ourdomain.com немедленно перенаправляет их обратно на service.ourdomain.com с обновленным файлом cookie билета, если время сеанса CAS не истекло.

Однако это не работает для AJAX. Веб-браузеры не следуют перенаправлениям для запросов XHR, даже если домен тот же.

Одним из очевидных решений было бы обслуживать все, начиная с https://ourdomain.com и останавливаться на бессмысленной поддомене. Это обширная операция, которая потребует обслуживания всего через https.

Другим решением будет регулярный пинг сервера, чтобы он никогда не прерывался. Помимо повышенной нагрузки на сервер, наличие страниц, которые никогда не истекают, отрицательно сказывается на том, что тайм-аут стоит на первом месте.

Что приводит к третьему дрянному решению: просто удалите тайм-аут.

Как преодолеть междоменные проблемы при вызовах Ajax к ресурсам, защищенным CAS? - это аналогичный вопрос, который остается без ответа, но этот вопрос представляется более широким, поэтому я надеюсь, что ответ на наш вопрос .

Есть ли у кого-нибудь решения этой проблемы, которые не сосут?

1 Ответ

0 голосов
/ 15 апреля 2012

Вы можете переносить запрос ajax xhr только при повторной проверке, чтобы браузер мог понять перенаправление. Это должно было бы изменить код для прокси-сервера. Этот «обходной путь» должен быть проверен и расширен (в худшем случае) для каждого вида веб-фреймворка ajax. Мы сделали это для jquery, который с радостью является базой ajax для rails3.

...