Различное поведение в запросе GET против POST Ajax - PullRequest
1 голос
/ 19 июля 2011

У нас есть приложение MVC, которое использует контроллеры для конечных точек AJAX и FormsAuth для аутентификации.

Я столкнулся с интересным сценарием, когда запрос GET будет вести себя иначе, чем запрос POST (оба для несанкционированногоuser).

В этом конкретном случае наш пользовательский ControllerFactory запускает следующий код, пытаясь получить доступ к этому контроллеру:

FormsAuthentication.SignOut();
requestContext.HttpContext.Response.Redirect(FormsAuthentication.LoginUrl);
throw new UnauthorizedAccessException();

(я понимаю, что перенаправление внутри запроса AJAX не имеет смысла, нопотерпите меня).

Когда я выполняю запрос GET (AJAX) к этому контроллеру, клиент получает 401 - Несанкционированное исключение, которое я могу перехватить на стороне клиента и перенаправить пользователя на страницу входа.

Когда я выполняю запрос POST (AJAX) к этому контроллеру, я получаю 302, и мой запрос перенаправляется на мою страницу входа.

Почему действуют запросы GET и POSTиначе?

1 Ответ

1 голос
/ 19 июля 2011

Поэтому я принял совет Дарина и провел некоторый рефакторинг, и больше не сталкивался с этой проблемой. :) Я обнаружил корень моей проблемы, которая заключалась в том, что у нас был атрибут для обработки ошибок MVC, который не имел атрибута IExceptionFilter, поэтому некоторые вещи происходили в неопределенных порядках. Спасибо за полезный удар в зад. ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...