Laravel 5.2:如果设置了cookie,则通过刀片检索cookie也会返回null [英] Laravel 5.2: retrieving a cookie via blade returns null also if cookie is set

查看:82
本文介绍了Laravel 5.2:如果设置了cookie,则通过刀片检索cookie也会返回null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我通过Javascript设置了Cookie my_cookie

   function createCookie(name, value, days) {
      var expires;
      if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires="+date.toUTCString();
      }
      else {
        expires = "";
      }
      document.cookie = name+"="+value+expires+"; path=/";
   }

   ....
   createCookie('my_cookie', 1, 365);
   ....

通过Chrome Cookie检查器,我看到该cookie是用值1创建的.

我尝试过的Via Laravel Blade:

 @if (Cookie::get('my_cookie') !== null) // or Cookie::get('my_cookie') == 1 or Cookie::get('my_cookie') == '1'
      <p>set</p>
 @else
      <p>unset</p>
 @endif

写下unset

 @if (request()->cookie('my_cookie') == '1') // or @if (request()->cookie('my_cookie') == 1)
      <p>set</p>
 @else
      <p>unset</p>
 @endif

结果始终为unset.

解决方案

从评论中移出:只有laravel创建的cookie才能由laravel处理.尝试使用本机Cookie $ _COOKIE.或者尝试通过laravel然后通过dd($ _ COOKIE)创建cookie,您将发现它与本机PHP创建的cookie完全不同

I set a cookie my_cookie via Javascript

   function createCookie(name, value, days) {
      var expires;
      if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires="+date.toUTCString();
      }
      else {
        expires = "";
      }
      document.cookie = name+"="+value+expires+"; path=/";
   }

   ....
   createCookie('my_cookie', 1, 365);
   ....

Via Chrome Cookie Inspector I see that the cookie is created with value 1.

Via Laravel Blade I tried:

 @if (Cookie::get('my_cookie') !== null) // or Cookie::get('my_cookie') == 1 or Cookie::get('my_cookie') == '1'
      <p>set</p>
 @else
      <p>unset</p>
 @endif

that writes unset

 @if (request()->cookie('my_cookie') == '1') // or @if (request()->cookie('my_cookie') == 1)
      <p>set</p>
 @else
      <p>unset</p>
 @endif

The result is always unset.

解决方案

Move from comment: Only cookie created by laravel can handle by laravel. Try native cookie $_COOKIE. Or try create cookie by laravel then dd($_COOKIE) you'll see it totally different to cookie which created by native PHP

这篇关于Laravel 5.2:如果设置了cookie,则通过刀片检索cookie也会返回null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆