В моем MVC-приложении у меня есть собственная обработка ошибок, которая ловит разные ошибки.Если происходит ошибка аутентификации, она перенаправляет на страницу входа:
public class JsonExceptionAttribute : HandleErrorAttribute {
if (filterContext.Exception.Message == "Auth expired") {
public override void OnException(ExceptionContext filterContext) {
string newUrl = Logic.GetUrl());
filterContext.Result = new RedirectResult(newUrl, false);
filterContext.ExceptionHandled = true;
return;
}
}
}
GetUrl () возвращает действительный URL-адрес.Кажется, это работает нормально большую часть времени.Он всегда возвращает редирект 302, который затем вызывает новый URL-адрес как запрос GET.
Но это не работает везде.Если в моем AuthorizeAttribute возникает исключение, 302 все равно возвращается, но браузер пытается открыть URL с помощью httpmethod «OPTIONS» вместо GET, что вызывает ошибку:
Если я возьму точный URL-адрес и скопирую / вставлю его в браузер (чтобы сделать из него GET), он будет работать нормально.Так откуда же вдруг появляются эти «OPTIONS»?
Это происходит в разных браузерах, и результат тот же, когда я возвращаю Redirect в HandleUnauthorizedRequest в AuthorizeAttribute вместо того, чтобы делать это вАтрибут HandleErrorAttribute