Как отключить файлы cookie в Laravel 5?

У меня есть одностраничное приложение, сделанное на Laravel 5.1. Я использую localStorage для хранения ключа API, и мне не нужны файлы cookie. Laravel создает для меня два куки:

  • XSRF-ЗНАК
  • laravel_session

Если я установил SESSION_DRIVER в array в конфигурацию моей среды, laravel_session cookie больше не сгенерирован.

Но я думаю, что может быть проблема с XSRF-TOKEN cookie, потому что я узнал эту часть кода в классе VerifyCsrfToken middleware:

public function handle($request, Closure $next)
{
    if ($this->isReading($request) || $this->shouldPassThrough($request) || $this->tokensMatch($request)) {
        return $this->addCookieToResponse($request, $next($request));
    }

    throw new TokenMismatchException;
}

И метод addCookieToResponse выглядит следующим образом:

protected function addCookieToResponse($request, $response)
{
    $config = config('session');

    $response->headers->setCookie(
        new Cookie(
            'XSRF-TOKEN', $request->session()->token(), time() + 60 * 120,
            $config['path'], $config['domain'], false, false
        )
    );

    return $response;
}

Кажется, он устанавливает этот файл cookie независимо от того, что. Я мог бы отключить это промежуточное программное обеспечение, но я хочу использовать его для проверки токена CSRF с заголовками HTTP. Могу ли я полностью отключить куки?

Ответ 1

Просто закомментируйте строки в app\Http\Kernel.php, относящиеся к файлам cookie и сеансам. Следующие, которые я нашел;

\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,

Надеюсь, что это поможет.

Ответ 3

Я только что проверил это в Laravel 6.0.
Для запуска промежуточного программного обеспечения CSRF и без добавления файлов cookie Laravel необходимо отключить (закомментировать) следующее промежуточное программное обеспечение:

\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,

Это предотвратит добавление Laravel cookie laravel_session.

Чтобы отключить добавление файла cookie XSRF-TOKEN, откройте промежуточное ПО \App\Http\Middleware\VerifyCsrfToken::class и установите для свойства $addHttpCookie значение false.