gpt4 book ai didi

cookies - 无法在 Laravel 4 中设置 cookie

转载 作者:行者123 更新时间:2023-12-03 01:28:28 26 4
gpt4 key购买 nike

我使用的是最新版本的 Laravel 4,但无法设置 cookie:

Route::get('cookietest', function()
{
Cookie::forever('forever', 'Success');
$forever = Cookie::get('forever');
Cookie::make('temporary', 'Victory', 5);
$temporary = Cookie::get('temporary');
return View::make('cookietest', array('forever' => $forever, 'temporary' => $temporary, 'variableTest' => 'works'));
});

查看脚本:

@extends('layouts.master')

@section('content')
Forever cookie: {{ $forever }} <br />
Temporary cookie: {{ $temporary }} <br />
Variable test: {{ $variableTest }}
@stop

产量:

Forever cookie: 
Temporary cookie:
Variable test: works

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

在我能找到的任何地方都没有抛出或记录错误。我在本地运行 Linux Mint,在服务器上运行 Debian,两者都使用 nginx,并且我在两个地方都遇到相同的问题。

最佳答案

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

所以这段代码

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

不会得到任何结果,因为请求末尾没有附加 cookie。

您可以通过将其分成两条路线来尝试,例如

Route::get('cookieset', function()
{
$foreverCookie = Cookie::forever('forever', 'Success');
$tempCookie = Cookie::make('temporary', 'Victory', 5);
return Response::make()->withCookie($foreverCookie)->withCookie($tempCookie);
});


Route::get('cookietest', function()
{
$forever = Cookie::get('forever');
$temporary = Cookie::get('temporary');
return View::make('cookietest', array('forever' => $forever, 'temporary' => $temporary, 'variableTest' => 'works'));
});

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

关于cookies - 无法在 Laravel 4 中设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15777824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com