Я пытаюсь передать токен AntiForgery в заголовок запроса Ajax. Мой код JavaScript выглядит следующим образом:MVC-контроллер, похоже, проверяет неправильный токен AntiForgery
var tokenadr = $('form[action="/ServiceRequests/CreateRequest"] input[name="__RequestVerificationToken"]').val();
var token = tokenadr;
var headers = {};
var headersadr = {};
headers['__RequestVerificationToken'] = token;
headersadr['__RequestVerificationToken'] = tokenadr;
$.ajax({
type: 'POST',
dataType: 'json',
headers: headersadr,
cache: false,
url: "/ServiceRequests/CreateRequest",
processData: false,
contentType: false,
data: formdata,
success: function (response, textStatus, jqXHR) {
window.location = "/ServiceRequests/Details/" + response.id;
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Error - ' + errorThrown);
},
})`
Моя форма выглядит следующим образом:
@using (Html.BeginForm("CreateRequest", "ServiceRequests", null, FormMethod.Post, new { enctype = "multipart/form-data", id = "requestForm" }))
{
@Html.AntiForgeryToken()
Проблема заключается в том, что в моей общей папке Views, у меня есть частичный вид входа в систему с формой, как это:
using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
{
@Html.AntiForgeryToken()
Поэтому, когда я вызываю свой метод контроллера, используя вышеприведенный код Ajax, я получаю ошибку сервера. Мой запрос выполняется, если я удаляю токен AntiForgery из моей учетной записи LogOff (значения токена различаются для каждой формы). Как я могу разрешить это, не удаляя токен входа в систему?
Вот мой контроллер:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateRequest()
{
Вот что я в основном шел по: How to make ajax request with anti-forgery token in mvc