Включить CORS в Web API 2 / конечной точке токена - PullRequest
0 голосов
/ 10 января 2019

Здесь возникает небольшая проблема с CORS. Вы, наверное, знаете один ...

Доступ к XMLHttpRequest по адресу http://localhost:59365/Token' от источника 'http://localhost:4200' заблокирован политикой CORS: Ответ на предполётный запрос не проходит проверку контроля доступа: не имеет HTTP ok статус.

Получается, что мне нужно включить CORS в проекте Web API, поэтому я запустил Install-Package Microsoft.AspNet.WebApi.Cors и добавил config.EnableCors() к WebApiConfig.cs

Это не помогло, поскольку рассматриваемая конечная точка /Token для всех намерений и целей встроена в OAuth, поэтому я не могу коснуться этого кода, чтобы добавить аннотацию [EnableCors], которая, очевидно, необходима для этой работы:

OAuthOptions = new OAuthAuthorizationServerOptions {
     TokenEndpointPath = new PathString("/Token"),
     ... 
}

Итак, последняя идея, которая у меня появилась (которую я не собираюсь сейчас пробовать, так как сейчас 1 час ночи, и мне нужно работать завтра), - это перенаправить логин на контроллер, которым я могу манипулировать, и использовать его как своего рода "среднего человека" между моим приложением и / Token, хотя по общему признанию, я не уверен, как может выглядеть код этого среднего человека ...

Я предполагаю, что есть более эффективный способ решения этой проблемы, о котором я не подозреваю, и я надеюсь, что вы, кто, вероятно, умнее меня, могли бы быть достаточно любезны, чтобы поделиться.

Суть в том, что если я не могу опубликовать в / Token, я не могу аутентифицировать свое приложение в сервисе, и оба бита программного обеспечения бесполезны. Я не понимаю, почему это так или как я должен решать эту проблему ...

1 Ответ

0 голосов
/ 07 июня 2019

Удалите весь код на основе CORS из файла WebApiConfig и добавьте приведенный ниже код в свой файл запуска в папке App_Start

   public void ConfigureAuth(IAppBuilder app)
    {
        app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
    }
...