ASP.NET Core 3 CORS Анонимный Ajax-запрос - PullRequest
0 голосов
/ 23 октября 2019

Запуск ASP.NET Core 3 (Azure Web App) и политика CORS, настроенная следующим образом:

                services.AddCors(options =>
                {
                    options.AddPolicy("TestCors",
                        builder =>
                        builder.WithOrigins(allowedDomains.ToArray())
                        .AllowAnyHeader()
                        .AllowAnyMethod()
                        .AllowCredentials());
                });

У меня есть конечная точка AJAX в контроллере, определенная так:

[EnableCors("TestCors")]
[AllowAnonymous]
public async Task<IActionResult> MyAjaxEndpoint(int parm1)
{
}

Когда я пытаюсь вызвать этот метод с помощью метода JQuery AJAX, например, так:

                $.ajax(
                {
                    url: 'otherdomain.com/MyAjaxEndpoint',
                    cache: false,
                    type: "POST",
                    crossDomain: true,
                    data: {parm1: 0},
                    xhrFields:
                    {
                        withCredentials: true
                    },
                    async: false
                });

, я получаю перенаправление 302 на страницу входа. Этого не произойдет, если произойдет аутентификация через стандартный файл cookie Identity.

У меня есть несколько токенов JWT, которые хранятся в файле cookie, который я хочу отправить с помощью запроса AJAX, и у меня сложилось впечатление, что в запросе AJAX требовалось withCredentials: true (это правильно?). Я не уверен, что именно это и является причиной проблемы.

В любом случае, я предположил, что [AllowAnonymous] обошел бы любые требования входа в систему через конвейер ASP.NET.

Что яздесь не хватает?

...