aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/web/http/headers/set-cookie/index.html
blob: 0319e08155fce1be612861b79cf910321ad77e22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
---
title: Set-Cookie
slug: Web/HTTP/Headers/Set-Cookie
translation_of: Web/HTTP/Headers/Set-Cookie
---
<div>{{HTTPSidebar}}</div>

<p>O cabeçalho de resposta HTTP <strong><code>Set-Cookie</code></strong> é usado para enviar cookies de um servidor para o agente usuário.</p>

<p>Para mais informações, veja o guia em <a href="/en-US/docs/Web/HTTP/Cookies">HTTP cookies</a>.</p>

<table class="properties">
 <tbody>
  <tr>
   <th scope="row">Header type</th>
   <td>{{Glossary("Response header")}}</td>
  </tr>
  <tr>
   <th scope="row">{{Glossary("Forbidden header name")}}</th>
   <td>no</td>
  </tr>
 </tbody>
</table>

<h2 id="Sintaxe">Sintaxe</h2>

<pre class="syntaxbox">Set-Cookie: &lt;nome-cookie&gt;=&lt;valor-cookie&gt;
Set-Cookie: &lt;nome-cookie&gt;=&lt;valor-cookie&gt;; Expires=&lt;date&gt;
Set-Cookie: &lt;nome-cookie&gt;=&lt;valor-cookie&gt;; Max-Age=&lt;non-zero-digit&gt;
Set-Cookie: &lt;nome-cookie&gt;=&lt;valor-cookie&gt;; Domain=&lt;domain-value&gt;
Set-Cookie: &lt;nome-cookie&gt;=&lt;valor-cookie&gt;; Path=&lt;path-value&gt;
Set-Cookie: &lt;nome-cookie&gt;=&lt;valor-cookie&gt;; Secure
Set-Cookie: &lt;nome-cookie&gt;=&lt;valor-cookie&gt;; HttpOnly

Set-Cookie: &lt;nome-cookie&gt;=&lt;valor-cookie&gt;; SameSite=Strict
Set-Cookie: &lt;nome-cookie&gt;=&lt;valor-cookie&gt;; SameSite=Lax

// São possíveis multiplas diretivas, por exemplo:
Set-Cookie: &lt;nome-cookie&gt;=&lt;valor-cookie&gt;; Domain=&lt;domain-value&gt;; Secure; HttpOnly
</pre>

<h2 id="Diretivas">Diretivas</h2>

<dl>
 <dt><code>&lt;nome-cookie&gt;=&lt;valor-cookie&gt;</code></dt>
 <dd>Um cookie começa com um par nome-valor:
 <ul>
  <li>Um <code>&lt;nome-cookie&gt;</code> pode ser qualquer caractere US-ASCII exeto caracteres de controle (CTLs), espaços, ou tabulações (TAB). Também não deve conter um separador de caractere como os seguintes: ( ) &lt; &gt; @ , ; : \ " /  [ ] ? = { }.</li>
  <li>Um <code>&lt;valor-cookie&gt;</code> pode opcionalmente ser atribuido entre aspas duplas e qualquer caractere US-ASCII são permitidos, exceto caracteres de controle (CTLs), espaços em branco, aspas duplas, vírgula, barra invertida e ponto e vírgula. <strong>Codificação</strong>: Muitas implementações realizam  codificação URL nos valores de cookie, contudo não é obrigatório pela especificação do RFC. Isso ajuda a satisfazer os requisitos sobre quais caracteres são permitidos para &lt;valor-cookie&gt;.</li>
  <li><strong><code>Prefixo __Secure-</code></strong>: Cookies com o nome começando com <code>__Secure-</code> (hífen faz parte do prefixo) precisam ser atribuidos com a flag de segurança e precisam ser de uma página segura (HTTPS).</li>
  <li><strong><code>Prefixo __Host-</code></strong>: Cookies com o nome começando com <code>__Host- </code>(hífen faz parte do prefixoprecisam ser atribuidos com a flag de segurança, precisam ser de uma página segura (HTTPS), não precisam ter um domínio especificado (portanto não são enviados para subdomínios) e o caminho (path) precisa ser "/".</li>
 </ul>
 </dd>
 <dt>Expires=&lt;data&gt; {{optional_inline}}</dt>
 <dd>O tempo de vida máximo do cookie como uma marcação de tempo (timestamp) HTTP. Veja {{HTTPHeader("Date")}} para a formatação detalhada. Se não especificado, o cookie terá o tempo de vida de uma <strong>sessão de cookie. </strong>Uma sessão é finalizada quando o cliente é desligado, significando que as sessões de cookies serão removidos nesse momento. Contudo, muitos navegadores web têm uma característica denominada de "restaurar sessão" que salvará todas suas abas e as trará de volta na próxima vez em que você utilizar o navegador. Os cookies estarão também presentes e será como se o navegador nunca tivesse sido fechado.</dd>
 <dt></dt>
 <dd>
 <p>Quando uma data de expiração é atribuída, o tempo e a data são relativos ao cliente em que os cookies estão sendo configurados e não ao servidor.</p>
 </dd>
 <dt>Max-Age=&lt;digito-diferente-de-0&gt; {{optional_inline}}</dt>
 <dd>Número de segundos até o cookie expirar. Um ou mais digitos de 1 a 9. Navegadores antigos (ie6, ie7 e ie8) não suportam Max-Age. Para cada navegador, se ambos (Expires e Max-Age) forem atribuídos, Max-Age terá precedência.</dd>
 <dt>Domain=&lt;valor-domínio&gt; {{optional_inline}}</dt>
 <dd>Especifica os hosts aos quais o cookie será enviado.
 <ul>
  <li>Se não for especificado, será usado o host do URL do documento atual, não incluindo subdomínios.</li>
  <li>Ao contrário das especificações anteriores, pontos de prefixo em nomes de domínio (<code>.example.com</code>) são ignorados.</li>
  <li>Se um domínio for especificado, subdomínios estarão sempre incluídos.</li>
 </ul>
 </dd>
 <dt>Path=&lt;valor-caminho&gt; {{optional_inline}}</dt>
 <dd>Indica um caminho (path) de URL que necessita existir no recurso solicitado antes de enviar o cabeçalho de Cookie. O caractere %x2F ("/") é interpretado como um separador de diretório e os sub-diretórios serão também correspondidos (por exemplo: Path=/docs, "/docs", "/docs/Web", ou "/docs/Web/HTTP" serão todos correspondidos).</dd>
 <dt>Secure {{optional_inline}}</dt>
 <dd>Um cookie seguro apenas será enviado para o servidor quando uma requisição utilizando os protocol SSL e HTTPS for realizada. No entanto, informações confidenciais ou sensíveis não deverão ser armazenadas ou transmitidas em Cookies HTTP pois todo o mecanismo é inerentemente inseguro e isso não significa, por exemplo que qualquer informação é criptografada.
 <p class="note"><strong>Nota:</strong> Sites inseguros (<code>http:</code>)  não podem mais atribuir cookies com a diretiva "secure" (novo em Chrome 52+ firefox Firefox 52+).</p>
 </dd>
 <dt>HttpOnly {{optional_inline}}</dt>
 <dd>Cookies HttpOnly não são acessíveis via JavaScript através da propriedade {{domxref("Document.cookie")}}, as API's {{domxref("XMLHttpRequest")}} e {{domxref("Request")}} são utilizadas para aliviar ataques de cross-site scripting ({{Glossary("XSS")}}).</dd>
 <dt>SameSite=Strict<br>
 SameSite=Lax {{optional_inline}} {{experimental_inline}}</dt>
 <dd>Permite que servidores garantam que um cookie não deve ser enviado juntamente com solicitações de sites cruzados (cross-site) , o que fornece novamente alguma proteção aos ataques de falsificação de solicitação entre sites (CSRF)  ({{Glossary("CSRF")}})<em> .</em></dd>
</dl>

<h2 id="Exemplos">Exemplos</h2>

<h3 id="Sessão_de_cookie">Sessão de cookie</h3>

<p>Sessão de cookie serão removidos quando o cliente desligar. Eles não especificam as diretivas Expires ou Max-Age. Note que o navegador web tem frequentemente  a opção "restaurar sessão" habilitada..</p>

<pre>Set-Cookie: sessionid=38afes7a8; HttpOnly; Path=/</pre>

<h3 id="Cookie_permanente">Cookie permanente</h3>

<p>Ao invés de expirar quando o cliente fecha, os cookies permantentes expiram numa data especificada (Expires), ou depois de uma duração de tempo especificada (Max-Age).</p>

<pre>Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly
</pre>

<h3 id="Domínios_inválidos">Domínios inválidos</h3>

<p>Um cookie pertencente a um domínio que não inclui o servidor original,  <a href="https://tools.ietf.org/html/rfc6265#section-4.1.2.3">deve ser rejeitado pelo agente usuário</a>.  Por exemplo: O cookie seguinte será rejeitado se foi atribuído por um servidor hospedado em originalcompany.com.</p>

<pre>Set-Cookie: qwerty=219ffwef9w0f; Domain=somecompany.co.uk; Path=/; Expires=Wed, 30 Aug 2019 00:00:00 GMT</pre>

<h3 id="Prefixo_do_cookie">Prefixo do cookie</h3>

<p>Nomes de cookies com os prefixos "__Secure-" e "__Host-" podem ser utilizados apenas de eles forem atribuídos com a diretiva "secure" de uma origem segura (HTTPS).  Além disso, cookies com o prefixo "__Host-" devem ter um caminho (path) de "/" (o host inteiro) e não devem ter um atributo de dominio. Para clientes que não implementam prefixos de cookie, você não pode contar com essas garantias adicionais e os cookies serão sempre aceitos.</p>

<pre>// Ambos aceitos quando de uma origem segura (HTTPS)
Set-Cookie: __Secure-ID=123; Secure; Domain=example.com
Set-Cookie: __Host-ID=123; Secure; Path=/

// Rejeitado devido a não atribuição da diretiva Secure
Set-Cookie: __Secure-id=1

// Rejeitado devido a falta da diretiva Path=/
Set-Cookie: __Host-id=1; Secure

// Rejeitado devido a atribuição de um domínio
Set-Cookie: __Host-id=1; Secure; Path=/; domain=example.com
</pre>

<h2 id="Especificações">Especificações</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Especificação</th>
   <th scope="col">Título</th>
  </tr>
  <tr>
   <td>{{RFC("6265", "Set-Cookie", "4.1")}}</td>
   <td>HTTP State Management Mechanism</td>
  </tr>
  <tr>
   <td>{{RFC("draft-ietf-httpbis-cookie-prefixes-00")}}</td>
   <td>Cookie Prefixes</td>
  </tr>
  <tr>
   <td>{{RFC("draft-ietf-httpbis-cookie-same-site-00")}}</td>
   <td>Same-Site Cookies</td>
  </tr>
  <tr>
   <td>{{RFC("draft-ietf-httpbis-cookie-alone-01")}}</td>
   <td>Strict Secure Cookies</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility">Compatibilidade com navegadores</h2>

<p>{{Compat("http.headers.Set-Cookie")}}</p>

<h2 id="Notas_de_compatibilidade">Notas de compatibilidade</h2>

<ul>
 <li>Começando com Chrome 53 e Firefox 52, sites inseguros (<code>http:</code>) não podem mais atribuir cookies com a diretiva "secure".</li>
</ul>

<h2 id="Veja_também">Veja também</h2>

<ul>
 <li><a href="/en-US/docs/Web/HTTP/Cookies">HTTP cookies</a></li>
 <li>{{HTTPHeader("Cookie")}}</li>
 <li>{{domxref("Document.cookie")}}</li>
</ul>