Заголовок Accept-Encoding относится к группе заголовков посвященных согласованию содержимого. Он отвечает за согласование метода кодирования содержимого (не путать с кодировкой). Если ресурс может быть закодирован несколькими методами, то клиенту предоставляется возможность выбрать наиболее для него предпочтительный.

Кодирование содержимого проводится с целью более оптимальной передачи данных. Основным механизмом, обеспечивающим экономию сетевых ресурсов и большую скорость передачи данных, является сжатие содержимого. Сжатие может осуществляться по разным алгоритмам.

Согласование содержимого со стороны клиента

При запросе ресурса клиент может сообщить серверу, какие алгоритмы сжатия он поддерживает. Например браузер Internet Explorer 6.0 отправляет следующий заголовок:

HTTP
Accept-Encoding: gzip, deflate

Если сервер поддерживает данные алгоритмы сжатия, он может вернуть ресурс закодированный одним из этих методов, а может и отказаться от кодирования, вернув ресурс в несжатом виде.

В протоколе HTTP/1.1, так же как и в других заголовках согласования содержимого, в заголовке Accept-Encoding появилась возможность использовать параметр q - оценка качества (qvalue).
Оценка качества — это число от 0 до 1, определяющее степень предпочтения клиентом того или иного метода кодирования. Более предпочтительные методы помечаются более высокой оценкой качества. Если оценка качества отсутствует, то по умолчанию присваивается наивысшая оценка 1.

HTTP
Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0

Так же в HTTP/1.1 появилась возможность обобщать все методы кодирования с помощью символа звездочки "*". Значение "identity" означает запрет любого кодирования.

Согласование содержимого со стороны сервера

Концепция согласования содержимого со стороны сервера появилась только в протоколе HTTP/1.1
Запрос клиента предшествует ответу сервера, поэтому целесообразно стратегию согласования содержимого начинать с предпочтений клиента. Если же сервер определяет, что он не может закодировать содержимое ресурса ни одним из указанных клиентом методов кодирования, он должен (уровень SHOULD) послать ему ответ с кодом состояния 406 Not Acceptable.

Если же на сервере содержимое ресурса может быть закодировано всего одним методом, то вместо ответа 406 Not Acceptable спецификация рекомендует вернуть ресурс, игнорируя заголовок Accept-Encoding.