#c_sharp #aspnet_core
Изучаю особенности 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 Search(ContactSearchViewModel model)
{
var contacts = await this.ContactService.SearchAsync(model.Needle);
return View(contacts);
}
Если строку раскомментировать - то запросы до action не доходят (брейкпойнт не срабатывает),
заворачиваются с 400 Bad Request где-то раньше в недрах вебсервера.
Вопрос простой: как правильно создавать ajax-запросы в .core чтобы они проходили
валидацию?
Ответы
Ответ 1
Согласно документации в представлении нужно добавить метод получения токена и скрытое поле: @inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf @functions { public string GetAntiXsrfRequestToken() { return Xsrf.GetAndStoreTokens(Context).RequestToken; } } и добавить в запрос заголовок с полученным токеном: $.ajax({ ... headers: { "RequestVerificationToken": $('#RequestVerificationToken').val() }, ... });
Комментариев нет:
Отправить комментарий