Ошибка проверки Ajax CSRF в net core 3, ошибка 400

#ajax #model-view-controller #csrf #.net-5

Вопрос:

Следуя всей документации и прочитав дюжину вопросов SO и статей третьих лиц, я ни за что на свете не могу понять, почему мои запросы CSRF терпят неудачу

мои службы настройки

  ...
 services.AddControllersWithViews()
        .AddRazorRuntimeCompilation();
 services.AddMvc();

 services.AddSession(o =>
 {
      o.IdleTimeout = TimeSpan.FromMinutes(120);
 });
 services.AddAntiforgery();
...
 

Мое Действие Контроллера

  public class TestController : Controller
 {...
     [HttpPost]
     [ValidateAntiForgeryToken]
     public IActionResult TestJSON([FromBody] JsonElement Event)
     { ...
 

Мой Взгляд

 <body>
@Html.AntiForgeryToken();
</body>
 

Мой Аякс

 var antiForgeryToken = $("input[name=__RequestVerificationToken]").val();

        data = { 'Test': 'Test' };
        var ajaxProps = {
            url: '/Test/testJSON',
            type: 'POST',
            dataType: "JSON",
            contentType: "application/json",
            data: JSON.stringify(data),
            success: function (response) {
                if (response.success) {
                    console.log("Success!");
                } else {
                    console.log(response.responseText);
                }
            },
            error: function (response) {
                console.log("error!");
            }
        }

        ajaxProps.headers = {
            "RequestVerificationToken": antiForgeryToken
        };

        $.ajax(ajaxProps);
 

В качестве примечания, если я удалю [ValidateAntiForgeryToken], данные будут получены правильно. Я могу проверить заголовки запроса и убедиться, что они установлены правильно в соответствии с документацией.
С включенным тегом validate я получаю ошибку 400 без подробных сведений об ответе.