вСтандарт HTTP 1.1, в нем говорится, что «Если в запросе нет поля Accept-Encoding, любое кодирование содержимого считается приемлемым пользовательским агентом».
Это означает, что сервер может, например, вернуть тело ответа, закодированное с помощью gzip, если поле accept-encoding пропущено.
Однако на практике большинство часто используемых серверов (например, Apache, nginx) этого не делают и отправляют несжатый ответ, если поле пропущено.
Справедливо ли сказать, что более разговорным поведением будет использовать только те кодировки, которые явно предложены клиентом? Это кажется более логичным ходом действий — заставить клиента предоставить список кодировок, с которыми он может работать, — несмотря на то, что это противоречит стандарту.
решение1
Никакое кодирование не считается приемлемым, даже если Accept-Encoding
заголовков нет. При отсутствии других указаний, не беспокоиться о сжатии — это распространенный выбор. Экономит работу, явно разрешенную спецификацией.
Если представление не имеет кодирования содержимого, то оно приемлемо по умолчанию, если только оно специально не исключено полем Accept-Encoding, указывающим либо «identity;q=0», либо «*;q=0» без более конкретной записи для «identity».
Или, если не предусмотрено, Accept-Encoding
реализация может выбрать все, что захочет, с помощью некоторого алгоритма. Пропуск согласования контента имеет небольшой риск того, что клиент не будет знать, что делать с кодировкой. Лично я хотел бы, Content-Encoding: zstd
но по состоянию на 2022 год это не распространено в пользовательских агентах.