Internet explorer 11 在IE/Edge中使用Laravel 5复制Cookie(令牌不匹配例外)
我们已经在Laravel5.3中开发了一个网站,但是只有IE/Edge浏览器在提交表单时有问题(TokenMismatchException) 我尝试了一些方法来修复它,如下所示: . 但是,windows 10上的IE11/Edge不再支持P3P策略。 我发现问题在于IE11/Edge存储了具有相同密钥名称(作为字符串)的重复COOKIE,尽管$\u COOKIE只为每个密钥存储一个(作为数组) 比如说,Internet explorer 11 在IE/Edge中使用Laravel 5复制Cookie(令牌不匹配例外),internet-explorer-11,session-cookies,laravel-5.3,microsoft-edge,php-7,Internet Explorer 11,Session Cookies,Laravel 5.3,Microsoft Edge,Php 7,我们已经在Laravel5.3中开发了一个网站,但是只有IE/Edge浏览器在提交表单时有问题(TokenMismatchException) 我尝试了一些方法来修复它,如下所示: . 但是,windows 10上的IE11/Edge不再支持P3P策略。 我发现问题在于IE11/Edge存储了具有相同密钥名称(作为字符串)的重复COOKIE,尽管$\u COOKIE只为每个密钥存储一个(作为数组) 比如说, $_SERVER['HTTP_COOKIE'] = "laravel_session=
$_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请求尝试使用$\u COOKIE中的值,但有时它不是正确的值。
在这种情况下,laravel无法解密该值(EncryptCookies中间件中发生MAC is invalid错误),因此密钥的$request->cookies变为null,并且在VerifyCsrfToken中间件中引发TokenMismatchException
有人知道IE11/Edge什么时候会为同一个密钥存储重复的cookies吗?我们如何避免它?
我找不到解决问题的具体方法,但它通常发生在IE/Edge中
以下是可能与此问题相关的更多参考资料: