Laravel Request Cookie不显示JS创建的Cookie

时间:2019-04-25 11:18:59

标签: laravel laravel-5

我正在使用JS-Cookie通过前端设置Cookie。 为什么我不能通过以下方式在Laravel 5.8应用程序中访问它: dd(request()->cookies)?带有名称的Cookie可见,但值为空。但是,当我尝试通过“正常”方式获取Cookie的值时,我的确得到了值:dd($_COOKIE['the-cookie-value-i-want']);

如何通过“ Laravel-way”访问Cookie的值?哪个更安全。

2 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,但您可以禁用特定 cookie 的加密,而不是禁用所有内容(这会破坏安全会话)。

编辑 \App\Http\Middleware\EncryptCookies 类以包含以下内容:

/**
 * The names of the cookies that should not be encrypted.
 *
 * @var array
 */
protected $except = [
    'my_frontend_cookie_name'
];

您现在可以通过 request()->cookie()Cookie::get() 外观访问 cookie 值。

答案 1 :(得分:0)

只有laravel创建的cookie可以由laravel处理。

现在这是实现此目的的方法

转到: app> Http> Kernal.php :在 $ middlewareGroups 数组下对此进行评论

 'web' => [
            //\App\Http\Middleware\EncryptCookies::class,

然后尝试

这是演示

<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Laravel</title>
    </head>
    <body>
        {{  Cookie::get('cookie1') }}
        {{  request()->cookie('cookie1') }}
        <script type="text/javascript">
            document.cookie = 'cookie1=test; path=/'
        </script>
    </body>
</html>