Referrer-Policy
===============

O cabeçalho HTTP **`Referrer-Policy`** controla quanta informação de referência (en-US) (enviado pelo cabeçalho `Referer`) deve ser incluída nas requisições.

|  |  |
| --- | --- |
| Tipo de cabeçalho | Response header (en-US) |
| Forbidden header name | não |

Sintaxe
-------

**Nota:** O nome original do cabeçalho `Referer` é um erro ortográfico da palavra "referrer". O cabeçalho `Referrer-Policy` não compartilha do mesmo erro ortográfico.
```

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
```

Diretivas
---------

`no-referrer`

O cabeçalho `Referer` será omitido completamente. Nenhuma informação de referência será enviada junto com as requisições.

`no-referrer-when-downgrade` (padrão)

Este é o comportamento padrão quando nenhuma política é especificada, ou se o valor provido é inválido. A origem, caminho e cadeia de consulta (origin, path, and 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).

**Nota:** Existe um esforço dos navegadores em mover para um valor padrão mais estrito, chamado de `strict-origin-when-cross-origin` (veja https://github.com/whatwg/fetch/pull/952), considere usar este valor (ou um mais estrito), se possível, quando trocando a Referrer-Policy.

`origin`

 Somente envia a origem (origin) do documento como referência.
 Por exemplo, um documento em `https://example.com/page.html` irá mandar a referência `https://example.com/`.


`origin-when-cross-origin`

Envia a origem, caminho e cadeia de consulta quando performando uma requisição same-origin (en-US), mas somente envia a origem do documento em outros casos.

`same-origin`

A referência será enviada para origens do mesmo site (en-US), mas requisições entre origens não enviarão informação de referência.

`strict-origin`

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).

`strict-origin-when-cross-origin`

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).

`unsafe-url`

Envia a origem, o caminho e a cadeia de consulta quando performando qualquer requisição, independente da segurança.

**Aviso:** 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.

Integração com HTML
-------------------

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 `<meta>` com um nome de `referrer`:


```html
<meta name="referrer" content="origin" />
```


Ou colocar ele para requisições individuais com o atributo `referrerpolicy` nos elementos `<a>`, `<area>`, `<img>`, `<iframe>`, `<script>`, or `<link>`:


```html
<a href="http://example.com" referrerpolicy="origin"></a>
```


Alternativamente, uma relação de link (en-US) `noreferrer` em um elemento `a`, `area`, ou `link` pode ser colocada:


```html
<a href="http://example.com" rel="noreferrer"></a>
```

Integração com CSS
------------------

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

* Folhas de estilo CSS externas usam a política padrão (`no-referrer-when-downgrade`), a não ser que seja sobrescrita por um cabeçalho HTTP `Referrer-Policy` na resposta da folha de estilo CSS.
* Para elementos `<style>` ou atributos `style` (en-US), a política de referência do dono do documento é utilizada.
Exemplos
--------

| Política | Documento | Navegar para | Referência |
| --- | --- | --- | --- |
| `no-referrer` | https://example.com/page | *qualquer lugar* | *(sem referência)* |
| `no-referrer-when-downgrade` | https://example.com/page | https://example.com/otherpage | https://example.com/page |
| https://mozilla.org | https://example.com/page |
| **http**://example.org | *(sem referência)* |
| `origin` | https://example.com/page | *qualquer lugar* | https://example.com/ |
| `origin-when-cross-origin` | https://example.com/page | https://example.com/otherpage | https://example.com/page |
| https://mozilla.org | https://example.com/ |
| **http**://example.com/page | https://example.com/ |
| `same-origin` | https://example.com/page | https://example.com/otherpage | https://example.com/page |
| https://mozilla.org | *(sem referência)* |
| `strict-origin` | https://example.com/page | https://mozilla.org | https://example.com/ |
| **http**://example.org | *(sem referência)* |
| **http**://example.com/page | *qualquer lugar* | http://example.com/ |
| `strict-origin-when-cross-origin` | https://example.com/page | https://example.com/otherpage | https://example.com/page |
| https://mozilla.org | https://example.com/ |
| **http**://example.org | *(sem referência)* |
| `unsafe-url` | https://example.com/page?q=123 | *qualquer lugar* | https://example.com/page?q=123 |

### Especificando uma política de recuo (*fallback)*

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:
```

Referrer-Policy: no-referrer, strict-origin-when-cross-origin
```


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

**Nota:** Especificar múltiplos valores só é suportado no cabeçalho HTTP `Referrer-Policy`, e não no atributo `referrerpolicy`.

Especificações
--------------

| Especificação | Status |
| --- | --- |
| Referrer Policy | Rascunho do editor |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**Nota:** - Da versão 53 em diante, Gecko possui uma preferência disponível em `about:config` para permitir usuários colocarem a `Referrer-Policy` padrão — `network.http.referer.userControlPolicy`.

* Da versão 59 em diante (veja #587523), isso foi substituído por `network.http.referer.defaultPolicy` e `network.http.referer.defaultPolicy.pbmode`.Valores possíveis são:- 0 — `no-referrer`
* 1 — `same-origin`
* 2 — `strict-origin-when-cross-origin`
* 3 — `no-referrer-when-downgrade` (o padrão)

Veja também
-----------

* HTTP referer on Wikipedia
* Quando usando Fetch: `Request.referrerPolicy` (en-US)
* A obsoleta diretiva `Content-Security-Policy` `referrer` (en-US).
* Política de mesma origem (*Same-origin policy*) (en-US)
* Tighter Control Over Your Referrers – Mozilla Security Blog