Изучаю особенности asp.net core 2.0 на небольших приложениях. Хочу например сделать небольшой ajax-запрос к списку контактов.
Вот есть у меня моделька
public class ContactSearchViewModel
{
public string Needle { get; set; }
}
и формочка:
function getSummary(needle) { $.ajax({ type: "POST", url: '/Contact/Search/', data: "Needle=" + needle, success: function (data) { $('#results').html(data); } }); }
И всё прекрасно работает... есть только одна маленькая досада: мне пришлось закомментировать ValidateAntiForgeryToken:
[HttpPost] //[ValidateAntiForgeryToken] public async Task
Если строку раскомментировать - то запросы до action не доходят (брейкпойнт не срабатывает), заворачиваются с 400 Bad Request где-то раньше в недрах вебсервера.
Вопрос простой: как правильно создавать ajax-запросы в .core чтобы они проходили валидацию?
Ответ
Согласно документации в представлении нужно добавить метод получения токена и скрытое поле:
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
@functions {
public string GetAntiXsrfRequestToken()
{
return Xsrf.GetAndStoreTokens(Context).RequestToken;
}
}
и добавить в запрос заголовок с полученным токеном:
$.ajax({
...
headers:
{
"RequestVerificationToken": $('#RequestVerificationToken').val()
},
...
});
Комментариев нет:
Отправить комментарий