Файл cookie RequestVerificationToken не отправляется в запросах Ajax POST

Вот код Ajax:

            var token = $('form input[name="__RequestVerificationToken"]').val();
            var data = {};
            data.Type = $(e.target).attr('type');
            data.__RequestVerificationToken = token;

            url = '@Url.Action("MyAction", "MyController")';

            $.ajax({
                type: 'POST',
                url: url,
                data: data,
                dataType: "html",
                success: function (result) {
                    //do some stuff
                },
                error: function (err) {
                    //display error
                }
            })

В инструментах разработчика IE 11 во время начальной загрузки страницы (GET) я вижу, что устанавливается файл cookie RequestVerificationToken. Также заполняется элемент формы для RequestVerificationToken. Однако во время Ajax POST файл cookie не является частью запроса.

Chrome отлично работает в обоих местах, и во время Ajax POST файл cookie присутствует. IE 11 работает локально (localhost), но эта проблема возникает, когда IE 11 обращается к приложению на сервере, и возвращается эта ошибка:

Требуемый файл cookie для защиты от подделки "__RequestVerificationToken_L1JldkNvbm5lY3Q1" отсутствует.

По какой-то причине IE 11 не включает файл cookie в Ajax POST, когда приложение находится на сервере. Я вижу, что он отсутствует на вкладке «Сеть» инструментов разработчика IE. На вкладке «Сеть» инструментов разработчика Chrome присутствует файл cookie и работает POSt.


ASP.NET MVC 5


person user7050575    schedule 04.11.2016    source источник
comment
попробуйте сделать тип данных как json   -  person vamsi    schedule 04.11.2016
comment
Я изменил тип возвращаемого значения на «json», но файл cookie по-прежнему не передается контроллеру, поэтому возникает ошибка «файл cookie отсутствует».   -  person user7050575    schedule 04.11.2016
comment
Сообщение об ошибке относится к файлу cookie, а не к токену (ваш код ajax работает нормально и правильно отправит токен). См. этот ответ для одной возможной причины и решение   -  person    schedule 05.11.2016