ASP.NET Core Razor - AJAX Post - 400 неправильных запросов - PullRequest
0 голосов
/ 27 апреля 2018

AJAX POST на странице ASP.NET Core Razor не будет работать. Он всегда возвращает неверный запрос 400.

У меня есть следующий код метода страницы:

[ValidateAntiForgeryToken]
public async Task<IActionResult> OnPostProcessCCPaymentAsync(CheckInPaymentModel checkInPaymentModel)
    {
        return new JsonResult(checkInPaymentModel.AmountExtra);
    }

На странице установлено следующее:

@Html.AntiForgeryToken()

И следующий вызов JS AJAX:

$.ajax({
    type: "POST",
    url: "/CheckIn/Payment?handler=ProcessCCPayment",
    contentType: "application/json",
    beforeSend: function (xhr) {
        xhr.setRequestHeader("XSRF-TOKEN",
            $('input:hidden[name="__RequestVerificationToken"]').val());
    },
    data: JSON.stringify({
        // Those property names must match the property names of your PromotionDecision  view model
        Donate: true
    }), 
    success: function (response) {
        $(".paymentDetails .loading").addClass("loader").removeClass("loading");
    },
    failure: function (response) {
        $(".paymentDetails .loading").addClass("loader").removeClass("loading");
    }
});

Если тип Ajax изменен на GET, а метод изменен на OnGetProcessCCPaymentAsync, то он корректно отправляется на сервер.

Однако AJAX POST в Core Razor всегда завершается ошибкой 400. Неверный запрос.

Я выполняю отладку непосредственно из Visual Studio, поэтому URL-адрес http://localhost:62632/CheckIn/Payment, поэтому я не знаю, как найти журналы, чтобы узнать, какая ошибка возникает, когда экземпляр отладки получает запрос.

Любые идеи или советы будут с благодарностью.

1 Ответ

0 голосов
/ 02 августа 2019

Просто, чтобы не было путаницы в чтении вышеприведенных ревизий и комментариях (что заставило меня на минуту почесать голову), решение состоит в том, чтобы изменить:

xhr.setRequestHeader("XSRF-TOKEN",

Кому:

xhr.setRequestHeader("RequestVerificationToken",

Ответ находится в пересмотре, и кто-то отредактировал его. Это также кратко упоминается в комментариях. Я, конечно, не принимаю кредит, просто пытаюсь свести к минимуму путаницу для тех, кто сталкивается с этой безумной ошибкой в ​​будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...