Laravel Cookie 未设置

Laravel Cookie doesn't get set

我正在尝试将一个数组保存为 cookie 中的 json,在前端有一个表格被填充并且它每隔几分钟自动保存一次我想保存cookie 中的 JSON 数据,以防用户离开页面。

在控制器中,我这样保存 cookie:

public function autoSave() {

    $data = request()->validate([
        'data' => 'required'
    ]);


    $lifetime = time() + 60 * 60 * 24 * 365;// one year

    $array = json_encode($data);

    Cookie::forget('listData'); //I use this to delete the old cookie and generate a new one


    $cookie = Cookie::make('listData', $array, $lifetime);

    return response()->json(['success' => true])->withCookie($cookie);


}

我这样检索它:

public function getAutoSave() {

    if(Cookie::get('listData') !== null) {
        $data = Cookie::get('listData');

        $data = json_decode($data);
        

        return response()->json([
            'data' => $data
        ]);

    }
    else {

        return response()->json([
            'data' => false
        ]);

    }

}

自动保存有时有效,有时无效,可能是什么问题?

**编辑

查看服务器响应我收到错误 The Set-Cookie header had invalid syntax,可能是 JSON 我试图保存为 cookie 创建它,因为它太长了。

您是否考虑过在客户端使用本地存储?似乎是它的完美用例(除非我遗漏了一些关于为什么它应该是 cookie 的上下文)。另外,您不会为了保存数据而往返于服务器。

所以我开发了解决方法并让用户先注册,然后他才能在表单中执行任何操作,在我的情况下需要注册,而不是在开始时,我创建了一个模型迁移自动保存与用户和现在一切正常。