.Net Core ValidateAntiForgeryToken выдает ошибку web api 400

Visual Studio 2017 с Web Api с использованием .net Core 1.1 Я использую, но получаю ошибку 400 Bad Request.

Ошибка возникает во всех смыслах:

  1. Угловой http
  2. Скрипач
  3. Почтальон
  4. SoapUI
  5. Чванство

Веб-API ASP.NET «400 неверный запрос» при запросе POST

[HttpPut]
//[ValidateAntiForgeryToken]
public IActionResult Put([FromBody]VeteranInteraction sessionTracker)
{ //.... } 

Почему это происходит ?

ValidateAntiForgeryToken это проблема, если я прокомментирую это работает.


person Community    schedule 13.09.2017    source источник
comment
вы пробовали удалить FromBody? также опубликуйте точные данные, которые вы отправляете из одного из источников (желательно от почтальона, так как это лучше всего для тестов)   -  person Neville Nazerane    schedule 13.09.2017
comment
кстати 400 означает, что данные, которые вы отправляете, не в ожидаемом формате.   -  person Neville Nazerane    schedule 13.09.2017
comment
за исключением того, что отправленные данные json работали, когда просто комментировали этот токен ...   -  person    schedule 14.09.2017
comment
Было ли это когда-нибудь решено?   -  person paultechguy    schedule 13.11.2017


Ответы (2)


Вам необходимо отправлять токен AntiForgery при каждом запросе, где он проверяется либо как файл cookie, либо как заголовок http.

См. документацию здесь. У них есть раздел о том, как настроить angular js для этого.

person galdin    schedule 13.09.2017
comment
Я применил точную реализацию и не могу заставить ее работать - person JSON; 04.01.2018

Вы должны отправлять токен AntiForgery при каждом запросе

 var arr = { City: 'Tehran', Age: 25 };
    $.ajax({
        url: "@Url.Action("SaveAccess", "Access")",
        type: 'POST',
        data: JSON.stringify(arr),
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        async: false,
        beforeSend: function (request) {
            request.setRequestHeader("RequestVerificationToken", $("[name='__RequestVerificationToken']").val());
        },
        success: function (msg) {
            alert(msg);
        }
    });
person Amir Reza    schedule 25.09.2018