Cookies

Cookies são gerenciados com um pote de cookies que usa um formato prefixado para isolar os cookies por contexto que compartilhem atributos em comum. Além dos parâmetros usuais, o atributo Partitioned também é suportado.

Criando um pote de biscoitos

Um exemplo básico para definir 3 cookies:

use Inphinit\Experimental\Http\CookieJar; $jar = new CookieJar('sample'); $jar->foo = 1; $jar->bar = 2.5; $jar->baz = 'text'; $jar->setExpires('+1 week'); $jar->setHttpOnly(true); $jar->setPartitioned(true); $jar->send();

Ao usar o método send, cabeçalhos como este serão enviados na resposta:

Set-Cookie: sample:foo=1; Path=/; HttpOnly; Partitioned; Secure; Expires=Sun, 04 Jan 2026 19:42:30 GMT Set-Cookie: sample:bar=2; Path=/; HttpOnly; Partitioned; Secure; Expires=Sun, 04 Jan 2026 19:42:30 GMT Set-Cookie: sample:baz=3; Path=/; HttpOnly; Partitioned; Secure; Expires=Sun, 04 Jan 2026 19:42:30 GMT

Deletando cookies:

Deletando um cookie:

use Inphinit\Experimental\Http\CookieJar; $jar = new CookieJar('sample'); $jar->foo = null; $jar->bar = null; $jar->baz = '3'; $jar->send();

Ao usar o método send, cabeçalhos como este serão enviados na resposta:

Set-Cookie: sample:foo=_; Path=/; HttpOnly; Partitioned; Secure; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0 Set-Cookie: sample:bar=_; Path=/; HttpOnly; Partitioned; Secure; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0 Set-Cookie: sample:baz=3; Path=/; HttpOnly; Partitioned; Secure; Expires=Sun, 04 Jan 2026 19:45:48 GMT

API

Uso Descrição
setDomain($domain) Define o host para o qual o cookie será enviado. Observação: ao contrário das especificações anteriores, os pontos iniciais nos nomes de domínio (.example.com) são ignorados.
setExpires(string $datetime) Indicates the maximum lifetime of the cookies. Note: Accept English textual datetime descriptions (e.g., '+1 day', 'last Monday'). Indica a duração máxima dos cookies. Nota: Aceita descrições de data e hora em inglês (por exemplo, '+1 day', 'last Monday').
setHttpOnly(bool $enable) Forbids JavaScript from accessing the cookie, for example, through the document.cookie property. Impede que o JavaScript acesse o cookie, por exemplo, através da propriedade document.cookie.
setPartitioned(bool $enable) Indicates that the cookie should be stored using partitioned storage. Note that if this is set, the Secure directive must also be set. Indica que o cookie deve ser armazenado usando armazenamento particionado. Observe que, se esta opção estiver definida, a diretiva Secure também deverá ser definida.
setPath(string $path) Indica o caminho que deve existir no URL solicitado para que o navegador envie o cabeçalho Cookie.
setSameSite(int $mode) Controla se um cookie é enviado ou não com solicitações entre sites diferentes.
setSecure(bool $enable) Indica que o cookie é enviado ao servidor apenas quando uma solicitação é feita com o esquema https (exceto em localhost) e, portanto, é mais resistente a ataques do tipo man-in-the-middle.

Constants

As seguintes constantes devem ser usadas com o método setSameSite():

Uso Descrição
SAME_LAX Enviar cookies apenas para solicitações originadas do mesmo site que definiu o cookie e para solicitações entre sites que atendam aos dois critérios a seguir.
  • Isso excluiria, por exemplo, solicitações feitas usando a API fetch ou solicitações de sub-recursos de elementos <img> ou <script>, ou navegações dentro de elementos <iframe>.
  • Isso incluiria solicitações feitas quando o usuário clica em um link no contexto de navegação de nível superior de um site para outro, ou uma atribuição a document.location, ou um envio de <form>.
SAME_NONE Envie o cookie tanto para solicitações "entre sites" quanto para solicitações "no mesmo site".
SAME_STRICT Enviar cookies somente para solicitações originadas do mesmo site que definiu o cookie.

Examplo:

use Inphinit\Experimental\Http\CookieJar; $jar = new CookieJar('sample'); ... $jar->setSameSite(CookieJar::SAME_STRICT); $jar->send();
Página inicial
Apoie com uma estrela no GitHub