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