У нас есть приложение 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иначе?