无法在Laravel 4中设置cookie

前端之家收集整理的这篇文章主要介绍了无法在Laravel 4中设置cookie前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用的是最新版本的Laravel 4,我无法设置cookie:
  1. Route::get('cookietest',function()
  2. {
  3. Cookie::forever('forever','Success');
  4. $forever = Cookie::get('forever');
  5. Cookie::make('temporary','Victory',5);
  6. $temporary = Cookie::get('temporary');
  7. return View::make('cookietest',array('forever' => $forever,'temporary' => $temporary,'variableTest' => 'works'));
  8. });

查看脚本:

  1. @extends('layouts.master')
  2.  
  3. @section('content')
  4. Forever cookie: {{ $forever }} <br />
  5. Temporary cookie: {{ $temporary }} <br />
  6. Variable test: {{ $variableTest }}
  7. @stop

产量:

  1. Forever cookie:
  2. Temporary cookie:
  3. Variable test: works

如果我刷新页面或在一个路径中创建cookie并尝试在另一个路径中访问它们并不重要.我可以确认没有使用上述操作设置cookie. Cookie’laravel_payload’和’laravel_session’以及’remember_ [HASH]’确实存在,我可以使用setcookie使用常规PHP设置cookie.

在我能找到的任何地方都不会抛出或记录任何错误.我在我的服务器上运行Linux Mint本地和Debian,都使用Nginx,我在两个地方都有同样的问题.

解决方法

Cookie不应该像这样使用,它们被设置为下一个请求,而不是当前请求.您必须手动将它们附加到您的响应中,如 documentation中所述.

所以这段代码

  1. Cookie::forever('cookie','value');
  2. $cookie = Cookie::get('cookie');

将不会得到任何结果,因为cookie未在请求结束时附加.

您可以通过将它分成两个路径来尝试它

  1. Route::get('cookieset',function()
  2. {
  3. $foreverCookie = Cookie::forever('forever','Success');
  4. $tempCookie = Cookie::make('temporary',5);
  5. return Response::make()->withCookie($foreverCookie)->withCookie($tempCookie);
  6. });
  7.  
  8.  
  9. Route::get('cookietest',function()
  10. {
  11. $forever = Cookie::get('forever');
  12. $temporary = Cookie::get('temporary');
  13. return View::make('cookietest','variableTest' => 'works'));
  14. });

然后首先访问yoursite.local / cookieset,然后访问yoursite.local / cookietest以查看它是否以这种方式工作并且将设置cookie.

猜你在找的HTML相关文章