php - Laravel 在 API 中设置 cookie 未设置

标签 php laravel

我使用 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 自带 webapi中间件组包含您可能希望应用于 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',
    ],
];

如您所见,EncryptCookiesAddQueuedCookiesToResponse中间件应用于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/

相关文章:

php - Google 通讯录广播/推送/通知/ Hook API

gcloud auth print-identity-token 的 PHP 等效项

php - Laravel 5.4 'HTML' 类未找到

laravel - 为什么我们使用\而不是命名空间?

javascript - 通过ajax发送php和js变量到php页面和mysql表

PHP session 超过 2 页

php - 我通过迁移重命名破坏了我的 Laravel 框架

php - Laravel - 停止并发访问记录

php - Laravel SSH 读写文件

php - 你能在不使用 Laravel 5 在数据库中创建条目的情况下填充 Eloquent 模型吗