Дублирование файлов cookie в IE/Edge с Laravel 5 (TokenMismatchException)

Мы разработали веб-сайт на Laravel 5.3, но только в браузерах IE/Edge возникают проблемы с отправкой форм (TokenMismatchException).

Я попробовал несколько способов исправить это следующим образом: Edge и IE 11 с приложением Laravel 5. Однако политика P3P больше не поддерживается IE11/Edge в Windows 10. Ссылка

Я обнаружил, что проблема в том, что IE11/Edge хранит дубликаты файлов cookie с одним и тем же именем ключа (в виде строки), хотя $_COOKIE хранит только один файл для каждого ключа (в виде массива).

Например,

$_SERVER['HTTP_COOKIE'] = "laravel_session=aaaaa; laravel_session=bbbb"
$_COOKIE = array('laravel_session' => 'aaaaa')

Я использовал базовые веб-промежуточные программы, такие как

'web' => [
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\VerifyCsrfToken::class,
],

По сути, запрос laravel пытается использовать значение в $_COOKIE, но иногда оно неверно.

В этом случае laravel не может расшифровать значение (в промежуточном программном обеспечении EncryptCookies возникает ошибка MAC is invalid), поэтому $request->cookies для ключа становится нулевым, а в промежуточном программном обеспечении VerifyCsrfToken генерируется исключение TokenMismatchException.

Кто-нибудь знает, когда IE11/Edge хранит дубликаты файлов cookie для одного и того же ключа и как этого избежать? Я не могу найти конкретного способа возникновения проблемы, но это часто происходит в IE/Edge.

Вот еще несколько ссылок, которые могут быть связаны с этой проблемой:


person R.I.    schedule 16.02.2017    source источник