Наш веб-сервер использует 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? - это аналогичный вопрос, который остается без ответа, но этот вопрос представляется более широким, поэтому я надеюсь, что ответ на наш вопрос .
Есть ли у кого-нибудь решения этой проблемы, которые не сосут?