Запуск 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.
Что яздесь не хватает?