#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 TaskSearch(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() }, ... });
Комментариев нет:
Отправить комментарий