Как программно проверить, разрешено ли сжатие http на веб-сервере? - PullRequest
7 голосов
/ 27 февраля 2009

Я хочу проверить, включено ли на веб-сервере сжатие http, и включено ли определенное сжатие (например, Gzip, Deflate, Compress)?

Или если я запрашиваю данные через объект WebClient в .net, установив для Accept-Encoding значение «gzip, deflate», как я могу узнать, сжаты ли полученные данные до их обработки?

Ответы [ 3 ]

9 голосов
/ 27 февраля 2009

Чтобы проверить кодировку тела ответа, необходимо проверить заголовок ответа HTTP: Content-Encoding.

Серверу разрешено использовать только те кодировки, которые указаны в заголовке запроса accept-encoding. Если сервер не может дать ответ, используя одну из указанных кодировок принятия, он должен ответить 406 (не приемлемо).

Пример запроса:

GET / HTTP/1.1
Host: www.brianbondy.com
Accept-Encoding: gzip,deflate

Пример ответа:

HTTP/1.1 200 OK
Date: Thu, 04 Dec 2003 16:15:12 GMT
Server: Apache/2.0
Content-Encoding: gzip
Content-Length: 1533

Другие примеры Accept-Encoding:

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

Как точно знать, какие кодировки доступны на сервере:

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

Это означает, что лучшее, что вы можете сделать, это ответить на вопрос: для файла, указанного в первой строке запроса, доступна ли конкретная кодировка для этого файла? Вы можете ответить на это, явно отрицая кодировку содержимого идентификатора и указав также кодировку, о которой вы хотите знать.

Accept-Encoding: gzip, identity;q=0

Источник примеров, HTTP RFC

4 голосов
/ 27 февраля 2009

Из спецификации HTTP :

4. Контентное кодирование «идентичности» всегда допустимо, если только специально отказано, потому что поле Accept-Encoding включает в себя «identity; q = 0», или потому что поле содержит «*; q = 0» и делает явно не включать «идентичность» контент-кодирования. Если Accept-Encoding поле-значение пустое, тогда только "идентичность" Кодировка допустима.

Таким образом, если вы установите Accept-Encoding: identity;q=0, gzip, deflate, вы заставите сервер сжать его или вернете 406 (не допустимо).

0 голосов
/ 25 декабря 2009

Это может помочь.

http://www.whatsmyip.org/http_compression/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...