L5 random TokenMismatchExceptions

Я получаю случайные значения TokenMismatchExceptions в Laravel 5. Используя следующий код в функции tokensMatch() я пытался отладить эту странную проблему:

 Log::debug($request->session()->token(). ', ' . $token); 

Вывод выглядит следующим образом:

 [2015-03-21 17:04:22] local.DEBUG: XJhAXXQumM0JLX9tFcQn1tQZMI1FtglDFuhi8abT, XJhAXXQumM0JLX9tFcQn1tQZMI1FtglDFuhi8abT [2015-03-21 17:04:34] local.DEBUG: XJhAXXQumM0JLX9tFcQn1tQZMI1FtglDFuhi8abT, XJhAXXQumM0JLX9tFcQn1tQZMI1FtglDFuhi8abT [2015-03-21 17:04:36] local.DEBUG: snE0IERJ1VY0o4qmSMuHb4wH9lhQUf5ZtVObOFnR, XJhAXXQumM0JLX9tFcQn1tQZMI1FtglDFuhi8abT [2015-03-21 17:04:36] local.ERROR: exception 'Illuminate\Session\TokenMismatchException' in vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php:47 Stack trace: [...] [2015-03-21 17:07:30] local.DEBUG: XJhAXXQumM0JLX9tFcQn1tQZMI1FtglDFuhi8abT, XJhAXXQumM0JLX9tFcQn1tQZMI1FtglDFuhi8abT 

Как вы можете видеть, первые 2 запроса преуспевают, третий – неудачный, а четвертый – снова. Я использую сетевые инструменты Fiddler и Chrome, и я могу подтвердить, что точно такие же данные были отправлены на сервер для всех запросов.

Таким образом, на стороне сервера появляются изменения токена. Странно то, что токен в файле сеанса, похоже, не меняется, и неправильный токен всегда является строкой, которую я раньше не видел, но всегда возвращается к исходной строке каким-то образом.

Это случается довольно часто, так что это действительно раздражает. Сначала я подумал, что это может быть что-то вроде драйвера сеанса базы данных, но теперь я использую драйвер файла, и это все еще происходит.

Обновить

У меня такая проблема. Я использую его на разных компьютерах и разных проектах, используя php artisan serve . Я также использую его на разных серверах и разных проектах (nginx 1.6.2, PHP 5.6.7).

Я не единственный с этой проблемой .

Это довольно сложно отлаживать, поскольку это происходит случайным образом, иногда оно не появляется некоторое время, а затем внезапно это происходит много раз подряд или только один раз. Просто повторно отправляя запрос POST, он иногда работает снова или иногда приводит к другому исключению.

Единственное, что я добавил к composer.json во всех проектах, – "illuminate/html": "5.*" . Все пакеты композиторов актуальны.

Я обновлю этот вопрос, как только у меня появится дополнительная информация об этой действительно странной проблеме.

Еще одно обновление

Я создал новый проект L5 и добавил минимальный код для воспроизведения этой ошибки. Изменения, которые я сделал, можно увидеть здесь (вместе с полным тестовым проектом). Я попробую отладку с этим проектом сейчас.

Это известная проблема с Laravel 5 для некоторых людей.

Существует открытый билет на выпуск Github по этой теме: https://github.com/laravel/framework/issues/8172

Причина еще не известна, и она продолжается некоторое время. В нем много умных людей, но кажущаяся случайность проблемы затрудняет отладку.

Я предлагаю вам внести свою информацию в этот билет и заглянуть туда для получения дополнительной информации.