aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/web/http/headers/referrer-policy/index.html
blob: 3291e49baeeddc9787f8807a71873ef091514839 (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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
---
title: Referrer-Policy
slug: Web/HTTP/Headers/Referrer-Policy
tags:
  - Cabeçalho HTTP
  - Cabeçalho de Resposta
  - HTTP
  - Referencia
  - Referrer-Policy
  - Resposta
  - privacidade
translation_of: Web/HTTP/Headers/Referrer-Policy
---
<div>{{HTTPSidebar}}</div>

<p><span class="seoSummary">O cabeçalho HTTP <strong><code>Referrer-Policy</code></strong> controla quanta <a href="/en-US/docs/Web/Security/Referer_header:_privacy_and_security_concerns">informação de referência</a> (enviado pelo cabeçalho {{HTTPHeader("Referer")}}) deve ser incluída nas requisições.</span></p>

<table class="properties">
 <tbody>
  <tr>
   <th scope="row">Tipo de cabeçalho</th>
   <td>{{Glossary("Response header")}}</td>
  </tr>
  <tr>
   <th scope="row">{{Glossary("Forbidden header name")}}</th>
   <td>não</td>
  </tr>
 </tbody>
</table>

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

<div class="blockIndicator note">
<p>O nome original do cabeçalho {{HTTPHeader("Referer")}} é um erro ortográfico da palavra "referrer". O cabeçalho <code>Referrer-Policy</code> não compartilha do mesmo erro ortográfico.</p>
</div>

<pre class="syntaxbox notranslate">Referrer-Policy: no-referrer
Referrer-Policy: no-referrer-when-downgrade
Referrer-Policy: origin
Referrer-Policy: origin-when-cross-origin
Referrer-Policy: same-origin
Referrer-Policy: strict-origin
Referrer-Policy: strict-origin-when-cross-origin
Referrer-Policy: unsafe-url
</pre>

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

<dl>
 <dt><code>no-referrer</code></dt>
 <dd>O cabeçalho {{HTTPHeader("Referer")}} será omitido completamente. Nenhuma informação de referência será enviada junto com as requisições.</dd>
 <dt><code>no-referrer-when-downgrade</code> (padrão)</dt>
 <dd>Este é o comportamento padrão quando nenhuma política é especificada, ou se o valor provido é inválido. A origem, caminho e cadeia de consulta ({{glossary("origin")}}, {{glossary("path")}}, and {{glossary("querystring")}}) da URL são enviadas como referência quando os níveis de protocolo de segurança continuam os mesmos (HTTP→HTTP, HTTPS→HTTPS) ou melhora (HTTP→HTTPS), mas não é enviado para destinos menos seguros (HTTPS→HTTP).
 <div class="note">Existe um esforço dos navegadores em mover para um valor padrão mais estrito, chamado de <code>strict-origin-when-cross-origin</code> (veja <a href="https://github.com/whatwg/fetch/pull/952">https://github.com/whatwg/fetch/pull/952</a>), considere usar este valor (ou um mais estrito), se possível, quando trocando a Referrer-Policy.</div>
 </dd>
 <dt><code>origin</code></dt>
 <dd>Somente envia a origem ({{glossary("origin")}}) do documento como referência.<br>
 Por exemplo, um documento em <code>https://example.com/page.html</code> irá mandar a referência <code>https://example.com/</code>.</dd>
 <dt><code>origin-when-cross-origin</code></dt>
 <dd>Envia a origem, caminho e cadeia de consulta quando performando uma requisição {{glossary("Same-origin_policy", "same-origin")}}, mas somente envia a origem do documento em outros casos.</dd>
 <dt><code>same-origin</code></dt>
 <dd>A referência será enviada para <a href="/en-US/docs/Web/Security/Same-origin_policy">origens do mesmo site</a>, mas requisições entre origens  não enviarão informação de referência.</dd>
 <dt><code>strict-origin</code></dt>
 <dd>Envia somente a origem do documento como referência quando o nível de protocolo de segurança se mantém o mesmo (HTTPS→HTTPS), mas não o envia para um destinatário menos seguro (HTTPS→HTTP).</dd>
 <dt><code>strict-origin-when-cross-origin</code></dt>
 <dd>Envia a origem, caminho e cadeia de consulta quando performando uma requisição de mesma origem, somente envia a origem quando o nível do protocolo de segurança se mantém o mesmo durante uma requisição entre origens (HTTPS→HTTPS), e envia nenhum cabeçalho para destinatários menos seguros (HTTPS→HTTP).</dd>
 <dt><code>unsafe-url</code></dt>
 <dd>Envia a origem, o caminho e a cadeia de consulta quando performando qualquer requisição, independente da segurança.
 <div class="blockIndicator warning">
 <p>Esta política irá vazar informações potencialmente privadas da URL HTTPS do recurso para origens inseguras. Considere o impacto desta configuração com cuidado.</p>
 </div>
 </dd>
</dl>

<h2 id="Integração_com_HTML">Integração com HTML</h2>

<p>Você também pode colocar política de referência dentro do HTML. Por exemplo, você pode colocar uma política de referência para o documento inteiro com um elemento {{HTMLElement("meta")}} com um <a href="/en-US/docs/Web/HTML/Element/meta#attr-name">nome</a> de <code>referrer</code>:</p>

<pre class="brush: html notranslate">&lt;meta name="referrer" content="origin"&gt;</pre>

<p>Ou colocar ele para requisições individuais com o atributo <code>referrerpolicy</code> nos elementos {{HTMLElement("a")}}, {{HTMLElement("area")}}, {{HTMLElement("img")}}, {{HTMLElement("iframe")}}, {{HTMLElement("script")}}, or {{HTMLElement("link")}}:</p>

<pre class="brush: html notranslate">&lt;a href="http://example.com" referrerpolicy="origin"&gt;</pre>

<p>Alternativamente, uma <a href="/en-US/docs/Web/HTML/Link_types">relação de link</a> <code>noreferrer</code> em um elemento <code>a</code>, <code>area</code>, ou <code>link</code> pode ser colocada:</p>

<pre class="brush: html notranslate">&lt;a href="http://example.com" rel="noreferrer"&gt;</pre>

<h2 id="Integração_com_CSS">Integração com CSS</h2>

<p>CSS pode buscar recursos referênciados de suas folhas de estilo. Estes recursos seguem a política de referência também como:</p>

<ul>
 <li>Folhas de estilo CSS externas usam a política padrão (<code>no-referrer-when-downgrade</code>), a não ser que seja sobrescrita por um cabeçalho HTTP <code>Referrer-Policy</code> na resposta da folha de estilo CSS.</li>
 <li>Para elementos {{HTMLElement("style")}} ou <a href="/en-US/docs/Web/API/HTMLElement/style">atributos <code>style</code></a>, a política de referência do dono do documento é utilizada.</li>
</ul>

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

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Política</th>
   <th scope="col">Documento</th>
   <th scope="col">Navegar para</th>
   <th scope="col">Referência</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <th><code>no-referrer</code></th>
   <td>https://example.com/page</td>
   <td><em>qualquer lugar</em></td>
   <td><em>(sem referência)</em></td>
  </tr>
  <tr>
   <th rowspan="3"><code>no-referrer-when-downgrade</code></th>
   <td rowspan="3">https://example.com/page</td>
   <td>https://example.com/otherpage</td>
   <td>https://example.com/page</td>
  </tr>
  <tr>
   <td>https://mozilla.org</td>
   <td>https://example.com/page</td>
  </tr>
  <tr>
   <td><strong>http</strong>://example.org</td>
   <td><em>(sem referência)</em></td>
  </tr>
  <tr>
   <th><code>origin</code></th>
   <td>https://example.com/page</td>
   <td><em>qualquer lugar</em></td>
   <td>https://example.com/</td>
  </tr>
  <tr>
   <th rowspan="3"><code>origin-when-cross-origin</code></th>
   <td rowspan="3">https://example.com/page</td>
   <td>https://example.com/otherpage</td>
   <td>https://example.com/page</td>
  </tr>
  <tr>
   <td>https://mozilla.org</td>
   <td>https://example.com/</td>
  </tr>
  <tr>
   <td><strong>http</strong>://example.com/page</td>
   <td>https://example.com/</td>
  </tr>
  <tr>
   <th rowspan="2"><code>same-origin</code></th>
   <td rowspan="2">https://example.com/page</td>
   <td>https://example.com/otherpage</td>
   <td>https://example.com/page</td>
  </tr>
  <tr>
   <td>https://mozilla.org</td>
   <td><em>(sem referência)</em></td>
  </tr>
  <tr>
   <th rowspan="3"><code>strict-origin</code></th>
   <td rowspan="2">https://example.com/page</td>
   <td>https://mozilla.org</td>
   <td>https://example.com/</td>
  </tr>
  <tr>
   <td><strong>http</strong>://example.org</td>
   <td><em>(sem referência)</em></td>
  </tr>
  <tr>
   <td><strong>http</strong>://example.com/page</td>
   <td><em>qualquer lugar</em></td>
   <td>http://example.com/</td>
  </tr>
  <tr>
   <th rowspan="3"><code>strict-origin-when-cross-origin</code></th>
   <td rowspan="3">https://example.com/page</td>
   <td>https://example.com/otherpage</td>
   <td>https://example.com/page</td>
  </tr>
  <tr>
   <td>https://mozilla.org</td>
   <td>https://example.com/</td>
  </tr>
  <tr>
   <td><strong>http</strong>://example.org</td>
   <td><em>(sem referência)</em></td>
  </tr>
  <tr>
   <th><code>unsafe-url</code></th>
   <td>https://example.com/page?q=123</td>
   <td><em>qualquer lugar</em></td>
   <td>https://example.com/page?q=123</td>
  </tr>
 </tbody>
</table>

<h3 id="Especificando_uma_política_de_recuo_fallback">Especificando uma política de recuo (<em>fallback)</em></h3>

<p>Se você quer especificar uma política de recuo em qualquer caso que a política desejada não tenha um grande suporte do navegador, use uma lista separada por vírgulas com a política desejada especificada por último:</p>

<pre class="notranslate">Referrer-Policy: no-referrer, strict-origin-when-cross-origin</pre>

<p>No cenário acima, <code>no-referrer</code> só será usada se <code>strict-origin-when-cross-origin</code> não for suportada pelo navegador.</p>

<p class="note">Especificar múltiplos valores só é suportado no cabeçalho HTTP <code>Referrer-Policy</code>, e não no atributo <code>referrerpolicy</code>.</p>

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

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Especificação</th>
   <th scope="col">Status</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td><a href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header">Referrer Policy </a></td>
   <td>Rascunho do editor</td>
  </tr>
 </tbody>
</table>

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

<p>{{Compat("http.headers.Referrer-Policy")}}</p>

<div class="note">
<ul>
 <li>Da versão 53 em diante, Gecko possui uma preferência disponível em <code>about:config</code> para permitir usuários colocarem a <code>Referrer-Policy</code> padrão — <span class="quote"> <code>network.http.referer.userControlPolicy</code>.</span></li>
 <li>Da versão 59 em diante (veja <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=587523">#587523</a>), isso foi substituído por <code>network.http.referer.defaultPolicy</code> e <code>network.http.referer.defaultPolicy.pbmode</code>.</li>
</ul>

<p>Valores possíveis são:</p>

<ul>
 <li>0 — <code>no-referrer</code></li>
 <li>1 — <code>same-origin</code></li>
 <li>2 — <code>strict-origin-when-cross-origin</code></li>
 <li>3 — <code>no-referrer-when-downgrade</code> (o padrão)</li>
</ul>
</div>

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

<ul>
 <li>{{interwiki("wikipedia", "HTTP_referer", "HTTP referer on Wikipedia")}}</li>
 <li>Quando usando <a href="/en-US/docs/Web/API/Fetch_API">Fetch</a>: {{domxref("Request.referrerPolicy")}}</li>
 <li>A obsoleta diretiva <span style="white-space: nowrap;">{{HTTPHeader("Content-Security-Policy")}}</span> {{HTTPHeader("Content-Security-Policy/referrer", "referrer")}} {{Obsolete_Inline}}.</li>
 <li><a href="/en-US/docs/Web/Security/Same-origin_policy">Política de mesma origem (<em>Same-origin policy</em>)</a></li>
 <li>
  <p><a href="https://blog.mozilla.org/security/2015/01/21/meta-referrer/">Tighter Control Over Your Referrers – Mozilla Security Blog</a></p>
 </li>
</ul>