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 的上下文)。另外,您不会为了保存数据而往返于服务器。
所以我开发了解决方法并让用户先注册,然后他才能在表单中执行任何操作,在我的情况下需要注册,而不是在开始时,我创建了一个模型迁移自动保存与用户和现在一切正常。
我正在尝试将一个数组保存为 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 的上下文)。另外,您不会为了保存数据而往返于服务器。
所以我开发了解决方法并让用户先注册,然后他才能在表单中执行任何操作,在我的情况下需要注册,而不是在开始时,我创建了一个模型迁移自动保存与用户和现在一切正常。