Accept-Encoding
===============

O cabeçalho de requisição HTTP **`Accept-Encoding`** indica qual codificação de conteúdo, usualmente um algoritmo de compressão, o cliente está apto a entender. Usando negociação de conteúdo, o servidor seleciona uma das propostas, a utiliza e informa o cliente da escolha feita com o cabeçalho de resposta `Content-Encoding`.

Até mesmo se o cliente e o servidor suportarem os mesmos algoritmos de compressão, o servidor pode escolher não comprimir o corpo da resposta, se o valor de identidade também é aceitável. Dois casos comuns levam a isso:

* Os dados a serem enviados já estão comprimidos e a segunda compressão não irá deixar os dados menores para serem transmitidos. Isso pode ser o caso com alguns formatos de imagens;
* O servidor está sobrecarregado e não pode suportar a sobrecarga computacional induzida pelas exigências da compressão. Tipicamente, a Microsoft recomenda a não comprimir um corpo de resposta se o servidor utiliza mais do que 80% do seu poder computacional.

Enquanto o valor de `identity`, que significa sem codificação, não é explicitamente proibido, por um `identity;q=0` ou um `*;q=0` sem qualquer outra atribuição explícita para a identidade, o servidor nunca deve mandar como resposta um erro `406` `Not Acceptable`.

**Nota:** **Notas:**- Um registro da IANA mantém a lista completa das codificações de conteúdo.

* Duas outras codificações de conteúdo, `bzip` e `bzip2`, são algumas vezes utilizadas, entretanto não são o padrão. Elas implementam o algoritmo usado por estes dois programas UNIX. Note que o primeiro foi descontinuado por problemas de patente.


|  |  |
| --- | --- |
| Tipo de cabeçalho | Request header |
| Forbidden header name | sim |

Sintaxe
-------
```

Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: identity
Accept-Encoding: *

// Múltiplos algoritmos, com pesos baseados na sintaxe de quality value (en-US):
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5
```

Diretivas
---------

`gzip`

Formato de compressão usando o Lempel-Ziv coding (LZ77), com CRC de 32-bits.

`compress`

Formato de compressão usando o algoritmo Lempel-Ziv-Welch (LZW).

`deflate`

Formato de compressão usando a estrutura zlib, com o algoritmo de compressão *deflate*.

`br`

Formato de compressão usando o algoritmo de Brotli.

`identity`

Indica a identidade da função (i.e. sem compressão, ou sem modificação). Esse valor é sempre considerado como aceitável, mesmo se não estiver presente.

`*`

Aceita qualquer codificação de conteúdo ainda não listada no cabeçalho. Esse é o valor padrão se o cabeçalho não estiver presente. Isto não significa que qualquer algoritmo é suportado; meramente que nenhuma preferência é expressa.

`;q=` (valores de peso q)

Qualquer valor é colocado em uma ordem de preferência expressada usando a quality value (en-US) relativa chamada *peso*.

Exemplos
--------
```

Accept-Encoding: gzip

Accept-Encoding: gzip, compress, br

Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1
```

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

| Especificação | Título |
| --- | --- |
| RFC 7231, sessão 5.3.4: Accept-Encoding | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context |

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

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

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

* Negociação de conteúdo HTTP
* Cabeçalho com o resultado do conteúdo de negociação: `Content-Encoding`
* Outros cabeçalhos similares: `TE`, `Accept`, `Accept-Charset`, `Accept-Language`