Laravel 5.4 Cookie值

5

我正在尝试获取cookie的值。

1 当我使用Laravel的请求cookie助手时:

$request->cookie('CookieName');

Laravel返回cookie的名称而不是其值。

2 当我使用dd()函数调试cookie()函数时:

dd(cookie('CookieName'));

我得到:

#name: "CookieName"
#value: null
#domain: null
#expire: 0
#path: "/"
#secure: false
#httpOnly: true
-raw: false
-sameSite: null

当我使用PHP的内置 $_COOKIE 函数时:

$_COOKIE['CookieName'];

我实际上获得了cookie的值。


有没有办法让Laravel返回cookie的值?

2个回答

3
正确的获取cookie值的方法就像你所使用的一样。
$request->cookie('name');

但是cookie助手方法会创建一个新的cookie而不是获取值。所以当你执行dd(cookie('CookieName'));时,它会创建一个名为"CookieName"且没有值的cookie并返回它。
Laravel会在用户无需干预的情况下对cookie值进行加密和解密。请检查您如何设置cookie,并确保已设置APP_KEY用于加密。更改此键将使所有旧cookie失效。

谢谢,我想我的问题在于,在设置 cookie 之前加密了 cookie 的值。我改变了方法,现在看起来可以工作了。 - Joshua Wieczorek

2

实际上

$value = $request->cookie('name');

文档中可以看到,应该给出一个值。

我怀疑你的cookie是由一些外部代码(而不是Laravel代码)设置的,例如它是由jQuery插件或其他东西创建的。在这种情况下,您必须将您的cookie添加到EncryptCookies中间件的$except表中。因为Laravel框架创建的所有cookie都是加密并使用身份验证代码进行签名的。所有其他cookie(例如来自jQuery插件的cookie)都没有被Laravel加密和签名,因此$request->cookie('name')无法查看它们或它们的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接