@sokira

Laravel чтение/установка cookies работает иногда, как починить?

Пытаюсь на Laravel 8.x сделать форму для согласия с политикой конфиденциальности.

Столкнулся с проблемой, что Cookie::get('personal_data'); ИНОГДА возвращает null при том, что кука установлена и я её вижу в Chrome Devtools.

$cookiePersonalData = Cookie::get('personal_data');


'personal_data' добавлена в исключения в
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;

class EncryptCookies extends Middleware
{
    protected $except = [
        'personal_data'
    ];
}


Появляется окно, нажимаю кнопку.
Cookies устанавливается. Это видно в отладчике.

Обновляю страницу и ИНОГДА опять получаю запрос на подтверждение, хотя при установленной cookies 'personal_data' этого блока вообще не должно быть на сайте.

Что я делаю не так?

@php
    $cookiePersonalData = Cookie::get('personal_data');
@endphp  

@empty($cookiePersonalData)

    <div class="cookies_consent cookies_consent--active">
        <div class="cookies_consent__text">
            ... 
            <button class="cookies_consent__apply" type="button">Принять</button>
        </div>
    </div>

    <script>
        const container = document.querySelector('.cookies_consent');
        if (container) {
            const apply = container.querySelector('.cookies_consent__apply');
            apply.addEventListener('click', () => {
                container.classList.remove('cookies_consent--active');
                document.cookie = 'personal_data=true; domain=.{{ env('APP_DOMAIN') }}; path=/; max-age=2592000';
            });
        };
    </script>

@endempty


в NGINX есть такая настройка:

fastcgi_cache_key         "$scheme$host$request_method$request_uri";
fastcgi_ignore_headers    X-Accel-Expires Expires Cache-Control Set-Cookie;


Если я правильно понимаю, что cookies не кэшируются сервером.
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы