我使用 laravel 5 作为 Rest API,我想在 Controller 中设置一个 cookie:
return response()->json(['success' => $data], $this-> successStatus)->cookie('name', 'myvalue');
这个用响应cookie成功返回,但是前面不能访问,我也用过:
Cookie::queue($name, $value);
或者
Cookie::queue(Cookie::make('cookieName', 'value'));
或者一直在谷歌,stackoverflow,但这些都没有在浏览器中设置 cookie,我需要通过 laravel Controller 在浏览器中设置 http only cookie。我怎样才能做到这一点?
我也用过 php cookie,没有成功
最佳答案
Cookie 将设置在 web
中间件组只有没有 api
.根据docs , Laravel 自带 web
和 api
中间件组包含您可能希望应用于 Web UI 和 API 路由的常见中间件:
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
//...
],
'api' => [
'throttle:60,1',
'auth:api',
],
];
如您所见,
EncryptCookies
和 AddQueuedCookiesToResponse
中间件应用于web
仅分组但不分组 api
.// This works and sets encrypted cookie on response.
Route::group(['middleware' => ['web']], function () {
return response()
->cookie('name', 'value');
});
// This won't set cookie on response.
Route::group(['middleware' => ['api']], function () {
return response()
->cookie('name', 'value');
});
关于php - Laravel 在 API 中设置 cookie 未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60239584/