Asp.Net Cors возвращает заголовки на OPTIONS, но не на запрос GET - PullRequest
0 голосов
/ 21 февраля 2019

Использование Microsoft.Owin.Cors в .Net Mvc (не ядро) проекте Я настраиваю cors при запуске следующим образом:

var cors = new CorsPolicy {
  AllowAnyHeader = true,
  SupportsCredentials = true,
};
cors.Origins.Add("http://localhost:3006");
cors.Methods.Add("GET");
cors.Methods.Add("POST");
cors.Methods.Add("PUT");
cors.Methods.Add("DELETE");
cors.Methods.Add("OPTIONS");
app.UseCors(new CorsOptions {
  PolicyProvider = new CorsPolicyProvider {
    PolicyResolver = ctx => Task.FromResult(cors)
  }
});

Когда я делаю перекрестный запрос изsite on localhost: 3006 Я получаю успешный предварительный запрос OPTIONS, за которым следует успешный, но заблокированный GET-запрос.

OPTIONS followed by a blocked GET

Когда я проверяю ответ, я вижу

access-control-allow-credentials: true
access-control-allow-headers: authorization
access-control-allow-origin: http://localhost:3006

в ответе ОПЦИИ, но не в GET!

Почему на земле нет?Что мне нужно, чтобы он работал правильно?

1 Ответ

0 голосов
/ 22 февраля 2019

Так что, подключившись к этому в течение целого дня, я наконец-то заработал.Я не мог заставить его работать с помощью обработчика Оуэна.Подсказка для меня заключается в том, что OPTIONS были успешными, но GET потерпел неудачу.

Я подозреваю, что в .Net Framework Mvc фактически происходит вне конвейера Owin, поскольку он напрямую связан с System.Web.Хотя я уверен, что есть способ исправить это, поиграв с моим web.config, в моем случае мне действительно только нужен CORS для моих маршрутов, обрабатываемых через веб-API, поэтому переход на Microsoft.AspNet.WebApi.Cors сделал свое дело.

...