Перенаправление на актуальную страницу в ответ на запрос ajax

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

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

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

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

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


person Richard H    schedule 24.08.2011    source источник
comment
Рассматривали ли вы возможность вернуть ответ 401?   -  person Nic    schedule 24.08.2011


Ответы (1)


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

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

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

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

person emboss    schedule 24.08.2011