Laravel 10读取Cookie值始终返回null问题求助
核心原因:Cookie的传输机制
你在当前请求里通过Cookie::queue()设置的Cookie,是通过响应头发送给浏览器并由浏览器本地存储的。只有下一次请求时,浏览器才会把这个Cookie携带回服务器,所以当前请求的$request对象里根本不会包含这个刚设置的Cookie,自然返回null。浏览器能看到的原因
浏览器调试面板显示的Cookie,是已经接收并保存了响应头里的Set-Cookie指令后的结果,这和当前请求的Request数据不属于同一个阶段的内容。验证与解决
- 跨请求验证:完成当前请求后,发起新请求(刷新页面、跳转等),此时用
dd($request->cookie('oa.action'))或dd($request->cookie('oa_action'))(Laravel支持两种格式的Cookie名)就能拿到正确值。 - 同请求内获取:如果需要在同一个请求里拿到刚设置的Cookie值,直接调用
Cookie::get('oa.action')即可,因为Laravel的Cookie队列中已经存储了这个值,无需等待浏览器回传。
- 跨请求验证:完成当前请求后,发起新请求(刷新页面、跳转等),此时用
内容的提问来源于stack exchange,提问作者Andrei RRR
相关产品推荐
相关产品推荐

