laravel cookie不加密去除httponly

发布时间:2020-12-19 01:17:23 阅读:1364次

Laravel 框架内,因为安全的原因考虑,默认对所有 cookie 进行加密存储。

有些时候,你想设置一个 Cookie 是不加密的,例如想用来跟 JS 交互,JS 可以直接读取到明文,可是以下面的代码设置后:

Cookie::queue('cookietest', 'cookie value', 99999999);
得到的却是这个:

一段加密的代码

解决方案

添加到 AppHttpMiddlewareEncryptCookies 的 排除名单 中:

<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as BaseEncrypter;
class EncryptCookies extends BaseEncrypter{
    /**
     * The names of the cookies that should not be encrypted.
     *
     * @var array
     */
    protected $except = [
        'cookietest', 
    ];
}

即可。

去除 HTTP ONLY

对了,如果要给 JS 读取的话,要把 cookie 的 http only 属性去掉,请使用以下代码:

Cookie::queue('cookietest', 'cookie value', $minutes = 99999999, $path = null, $domain = null, $secure = false, $httpOnly = false);

接着我们可以通过jquery.cookie.js来操作cookie

<script src="https://cdn.staticfile.org/jquery/3.4.0/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
console.log($.cookie('cookietest')); // => "value"
consoloe.log($.cookie('nothing')); // => undefined

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询
下一篇:电影八佰

转载请注明:laravel cookie不加密去除httponly 出自老鄢博客 | 欢迎分享