#laravel #cookies #laravel-8 #samesite
Вопрос:
В настоящее время я устанавливаю такой файл cookie (в промежуточном программном обеспечении).:
cookie()->queue("loginToken", $loginToken, 60*24*365*10);
Как мне указать SameSite = Нет?
Я использую Laravel 8.
Ответ №1:
в config/session.php
'same_site' => "none",
Комментарии:
1. Я думаю, что «нет» нуждается в кавычках вокруг него, потому что это должна быть строка.
2. Это близко, но я думаю, что это не совсем правильный ответ. Это устанавливает только одни и те же настройки сайта для сеансовых файлов cookie, а не какие-либо пользовательские файлы cookie, которые я хочу установить.
3. По какой-то причине для меня это ничего не изменило. Все еще получаю те же ошибки
Ответ №2:
Вот что я сделал. Помните, что это входит в функцию дескриптора промежуточного программного обеспечения.
$response = $next($request);
// https://symfony.com/doc/current/components/http_foundation.html#setting-cookies
// https://github.com/symfony/symfony/blob/5.3/src/Symfony/Component/HttpFoundation/Cookie.php
$cookie = SymfonyComponentHttpFoundationCookie::create("loginToken")
->withValue($loginToken)
->withExpires(strtotime(" 12 months"))
->withSecure(true)
->withHttpOnly(true)
->withSameSite("strict")
;
$response->headers->setCookie($cookie);
Ответ №3:
Объявление cookie
функции является:
function cookie($name = null, $value = null, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)
И queue
просто перенаправляет параметры, чтобы вы могли сделать:
cookie()->queue("loginToken", $loginToken, 60*24*365*10, null, null, null, true, false, 'None');