Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internet explorer 11 在IE/Edge中使用Laravel 5复制Cookie(令牌不匹配例外)_Internet Explorer 11_Session Cookies_Laravel 5.3_Microsoft Edge_Php 7 - Fatal编程技术网

Internet explorer 11 在IE/Edge中使用Laravel 5复制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=

我们已经在Laravel5.3中开发了一个网站,但是只有IE/Edge浏览器在提交表单时有问题(TokenMismatchException)

我尝试了一些方法来修复它,如下所示: . 但是,windows 10上的IE11/Edge不再支持P3P策略。

我发现问题在于IE11/Edge存储了具有相同密钥名称(作为字符串)的重复COOKIE,尽管$\u 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请求尝试使用$\u COOKIE中的值,但有时它不是正确的值。

在这种情况下,laravel无法解密该值(EncryptCookies中间件中发生MAC is invalid错误),因此密钥的$request->cookies变为null,并且在VerifyCsrfToken中间件中引发TokenMismatchException

有人知道IE11/Edge什么时候会为同一个密钥存储重复的cookies吗?我们如何避免它? 我找不到解决问题的具体方法,但它通常发生在IE/Edge中

以下是可能与此问题相关的更多参考资料: