Неожиданный метод «OPTIONS» от Redirectresult - PullRequest
1 голос
/ 26 сентября 2019

В моем 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, что вызывает ошибку:

Browser Requests

Если я возьму точный URL-адрес и скопирую / вставлю его в браузер (чтобы сделать из него GET), он будет работать нормально.Так откуда же вдруг появляются эти «OPTIONS»?

Это происходит в разных браузерах, и результат тот же, когда я возвращаю Redirect в HandleUnauthorizedRequest в AuthorizeAttribute вместо того, чтобы делать это вАтрибут HandleErrorAttribute

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