Как отключить файлы 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,
Надеюсь, что это поможет.
Ответ 2
Начиная с 5.7.0, файл cookie XSRF-TOKEN
теперь является необязательным. Чтобы отключить его, вам нужно просто установить следующее в файле /app/Http/Middleware/VerifyCsrfToken.php.
protected $addHttpCookie = false;
https://github.com/laravel/framework/commit/3ff7040663b81d8f01939edd2cb67d3214ec91b8
Ответ 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
.