Laravel 6 Несоответствие X-CSRF-Token при звонках ajax - PullRequest
0 голосов
/ 09 июля 2020

Я потратил почти 2 дня, пытаясь решить эту проблему несоответствия токенов CSRF.

У меня есть приложение, работающее на laravel 4.2, и у него нет проблем с вызовами Ajax. Я переместил сайт на Laravel 6, но у меня проблемы со звонками Ajax. Я проверил исходный код сайта, и он имеет _token, а также запрос Ajax (X-CSRF-Token) в заголовке запроса. Оба они совпадают.

        $.ajaxSetup({
            headers: {
                'X-CSRF-Token': $('meta[name="_token"]').attr('content')
            }
        });

Я настроил заголовок ajax для добавления токена в каждый вызов ajax.

При проверке проблемы в VerifyCsrfToken. php промежуточного программного обеспечения, я заметил, что 2 сравниваемых токена не совпадают.

        return is_string($request->session()->token()) &&
               is_string($token) &&
               hash_equals($request->session()->token(), $token);

Я проверил файлы сеансов в хранилище и заметил, что было создано несколько файлов сеансов, но каждый из них имел разное значение токена . Однако, по сравнению с кодом 4.2, все токены в файлах сеансов были одинаковыми.

Я не знаю, как работают эти файлы сеансов.

Мне интересно, каждый ли запрос сеанс должен хранить токен по-другому? Я неправильно храню Cook ie или есть что-то другое между версией 4.2 и версией 6.

Приветствуется любая помощь.

...