Несоответствие токенов CSRF Laravel 5..8

У меня проблема, я не знаю, почему отображается эта ошибка. У меня есть форма, которая публикуется через ajax. Я добавил метатег скрытого поля в заголовок своего представления. Когда я выполняю свой вызов ajax Я использую Ajaxsetup для ввода токена.

Вот метатег html в голове моего взгляда.

<meta name="csrf-token" content="{{ csrf_token() }}">

И мой вызов ajax

$('#login_model_submit').on('click', function () {
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

    let url = window.location.origin + '/login';
    let data = {
        'email': $('#login_email').val(),
        'password': $('#login_password').val(),
        '_token': $('meta[name="csrf-token"]').attr('content')
    };

    $.ajax({
        url: url,
        type: 'POST',
        data: data,
        success: function () {
            alert('Success')
        },
        error: function (e) {
            alert(e.responseText)
        }
    });
});

Не знаю, почему я получаю несоответствие токена csrf. Я сделал то, что видел во многих из этих вопросов / ответов, и это просто не работает. Любая помощь очень ценится.

Вот заголовки моих запросов

Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 49
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Host: vb.local
Origin: http://vb.local
Referer: http://vb.local/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
X-CSRF-TOKEN: YpP9izd705ztdtyqyFTBByLqcNmzoUIyb3i07HlA
X-Requested-With: XMLHttpRequest

person Eric Evans    schedule 24.11.2019    source источник
comment
Вы использовали инструменты разработчика, чтобы убедиться, что заголовок действительно отправляется в запросе?   -  person Rory McCrossan    schedule 24.11.2019
comment
Да, он есть, но все же ошибка.   -  person Eric Evans    schedule 24.11.2019
comment
Попробуйте изменить URL, например: let url = '/login'   -  person Ritesh Khandekar    schedule 25.11.2019


Ответы (1)


Эта проблема возникает из-за сбоя проверки токена CSRF. Так что либо вы не публикуете один, либо публикуете неправильный.

Используйте {{ csrf_field() }} в своей форме

ИЛИ

Добавьте URL вашего маршрута в файл Http/Middleware/VerifyCsrfToken.php.

Пример вроде этого. Если ваш маршрут ajax Route::post('searchsubmit','User\UserController@ViewSearchList')->name('searchsubmit');

Http / Middleware / VerifyCsrfToken.php

protected $except = [
       'searchsubmit',
    ];

В вашем случае вам нужно добавить login вот так

protected $except = [
           'login',
        ];

Затем очистить кеш

php artisan config:clear
php artisan cache:clear
php artisan config:cache
person Vaibhavi S.    schedule 25.11.2019
comment
@Eric Evans Я столкнулся с той же проблемой, и это решение работает для меня. - person Vaibhavi S.; 25.11.2019