Перенаправление на реальную страницу в ответ на запрос ajax - PullRequest
1 голос
/ 24 августа 2011

У нас есть приложение с отслеживанием состояния.Когда пользователь неактивен в течение некоторого времени, время сеанса истекает, и кэшированные данные / объекты уничтожаются.

У нас есть фильтр запросов, который проверяет сеанс перед обработкой запроса.Если сессия нулевая, мы возвращаем перенаправление на страницу входа.Это нормально работает для обычных, не XHR-запросов.

Но как нам быть с XHR-запросами?Насколько я понимаю, отправка перенаправления на запрос XHR будет просто означать, что html страницы входа возвращается в ответ на запрос XHR, что, очевидно, не является желаемым поведением!

Как мы можем выдать действительную страницуредирект в этом случае?Если это невозможно, какие есть альтернативы?Я полагаю, что многим приложениям приходится иметь дело с этим.

Редактировать : Я должен также упомянуть, что из-за использования инфраструктуры приложений, которая обрабатывает многие из наших AJAX вещей, мы не можемлегко добавлять проверки в ответ Ajax.

1 Ответ

1 голос
/ 24 августа 2011

Во-первых, вам, вероятно, нужно различать реальные запросы браузера и Ajax. Некоторые фреймворки уже добавляют свой пользовательский заголовок, если ваш - нет, вы можете дополнительно добавить такой заголовок 'X-Requested-With', чтобы иметь возможность узнать.

Затем перенаправьтебраузер запрашивает страницу входа напрямую.Для запросов Ajax вы должны ввести 401 Unauthorized.

Хотя вы говорите, что фреймворк обрабатывает большую часть вашего кода Ajax, он все равно должен предложить вам возможность подключиться к обработке кодов ошибок (в противном случае я бы подумал о переходе на другую фреймворк :),

В этой подпрограмме обратного вызова вы могли бы затем выполнить перенаправление на стороне Javascript / клиента, используя window.location=....

...