Я изучал примеры того, как это сделать на SO, и насколько я могу судить, я пробовал все примеры, которые я могу найти без успеха до сих пор. Я попытался изменить некоторые из реализаций моего сценария, но это пока не удалось.AJAX Проводка ValidateAntiForgeryToken без формы для метода действия MVC
Я это на моей странице в _layout.cshtml так у меня всегда есть в наличии: маркер
<form id="__AjaxAntiForgeryForm" action="#" method="post"> @Html.AntiForgeryToken()</form>
У меня также есть этот метод в моем в JavaScript Utils файл:
AddAntiForgeryToken = function (data) {
data.__RequestVerificationToken = $('#__AjaxAntiForgeryForm input[name=__RequestVerificationToken]').val();
return data;
};
Это все работая как ожидалось, и я получаю токен анти-подделки. Мой реальный код регистраци:
myPage.saveData = function() {
var saveUrl = '/exercises/PostData';
var myData = JSON.stringify(myPage.contextsArrays);
$.ajax({
type: 'POST',
async: false,
url: saveUrl,
data: AddAntiForgeryToken({ myResults: myData }),
success: function() {
alert('saved');
},
dataType: 'json',
contentType: "application/json; charset=utf-8"
});
};
Мой метод действий выглядит следующим образом:
[HttpPost, ValidateAntiForgeryToken, JsonExceptionFilter]
public JsonResult PostData(List<ResultsDc> myResults)
{
return Json(_apiClient.SubmitResults(myResults));
}
Я тестировал это с различными реализациями я пытался, и ответ всегда:
{"errorMessage":"The required anti-forgery form field \"__RequestVerificationToken\" is not present."}
Я не размещаю форму, это всего лишь массив данных, но, проверяя данные, которые фактически отправляются, Json не выглядит правильно (все кодируется), но имя параметра __RequestVerificationToken является re и значение токена.
В настоящий момент я довольно смущен этим и не могу найти правильный способ отправить токен, чтобы вызвать действие MVC. Если я удалю атрибут ValidateAntiForgeryToken
и у вас есть JSON.stringify(myPage.contextsArrays);
, в качестве данных json выглядит правильно (unencoded) и он отлично отображает.
Как получить этот токен, размещенный правильно без формы?
Я смущен. Если вы этого не видели, а ваш ответ ниже - кто-то elses (я видел этот код на других ответах на SO), почему вы пытаетесь ответить на что-то, чего не понимаете? – Jammer
Не нужно отделять атрибуты ... – Jammer