无法在Laravel Cookie :: queue中创建非httponly的cookie

时间:2016-06-03 08:41:50

标签: javascript laravel cookies laravel-5.1

我想用httpOnly = false创建一个cookie,这就是我现在正在做的事情

Cookie::queue("key", "val", 30, null, null, false, false);

但我无法在javascript中访问该Cookie,我也注意到{cookie}的开发者工具中设置了http flag

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

假设Laravel版本标志是正确的,那么在控制器方法上使用依赖注入是更好的做法:

public function controllerAction(\Illuminate\Cookie\CookieJar $cookieJar)
{
    $cookieJar->queue(cookie("key", "val", 30, null, null, false, false));
    return response()->view('Somedir.viewname');
    // Or any other type of response you'd want to return
}

更多信息:https://laracasts.com/discuss/channels/general-discussion/how-to-set-a-cookie-with-laravel-5

通常,Laravel HTTPKernel Cookie是加密的,只能由您的应用程序解密。

如果要使用Javascript访问cookie的值,请在视图中使用可以访问cookie的解密值的条件语句:

// someview.blade.php
@if ( request()->cookie('nameOfCookie') )
    <script>
        var cookieValue = '{!! request()->cookie('nameOfCookie') !!}';
    </script>
@endif

这样,只有在请求中设置了值时才会看到该值。您可以非常简单地测试在上面的代码之外设置的cookie值:

<script>
    if (cookieValue)
    {
        // Do something!
    }
<script>

如果您没有存储字符串,请记住更改输出类型。使用implode(string $glue, array $array) http://php.net/manual/en/function.implode.php

等函数需要进行数组到字符串的转换