+  HandyCache форум
|-+  Главная категория» Общие вопросы» Проблема с Content-Length
Имя пользователя:
Пароль:
Страниц: [1]   Вниз
  Отправить эту тему    Печать  
Автор Тема: Проблема с Content-Length  (Прочитано 5831 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sh8an
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« : 21 декабря 2011, 20:31:40 »

Приветствую всех
обнаружил тут случайно одну проблему связанную с тем как HandyCache обрабатывает Content-Length если это последний заголовок в блоке.
Используется цепочка Браузер - HandyCache - Проксомитрон
Какой то из фильтров проксо изменяет очередность заголовков и Content-Length идет самым последним. HandyCache его не видит и даже не  регистрирует с логе. Обычно такое происходит с картинками кроме гифов.
Самое интересно что в цепочке Fiddler - HandyCache - Proxomitron, fiddler видит заголовок последним и его обрабатывает
Далее перепост на англ с заголовками

Proxo headers
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 21 Dec 2011 15:50:29 GMT
Content-Type: image/jpeg; PrxMsg: Filter Image
Content-Length: 91656
Last-Modified: Tue, 20 Dec 2011 09:24:39 GMT
Connection: keep-alive
Accept-Ranges: bytes
Cache-Control: no-store, no-cache, max-age=0
Pragma: no-cache
|.*.URL-ID: (252) http://i29.fastpic.ru/big/2011/1220/87/d6900e54e897482f5ef88a97bd999e87.jpg

Handycache headers
21.12.11 20:50:24,014 # 1927 <<< URL: http://i29.fastpic.ru/big/2011/1220/87/d6900e54e897482f5ef88a97bd999e87.jpg
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 21 Dec 2011 15:50:29 GMT
Content-Type: image/jpeg; PrxMsg: Filter Image
Last-Modified: Wed, 21 Dec 2011 15:50:23 GMT
Accept-Ranges: bytes
Cache-Control: no-store, no-cache, max-age=0
Pragma: no-cache
|.*.URL-ID: (252) http://i29.fastpic.ru/big/2011/1220/87/d6900e54e897482f5ef88a97bd999e87.jpg
Transfer-Encoding: chunked
Connection: keep-alive

Fiddler headers
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 21 Dec 2011 15:50:29 GMT
Content-Type: image/jpeg; PrxMsg: Filter Image
Last-Modified: Wed, 21 Dec 2011 15:50:23 GMT
Accept-Ranges: bytes
Cache-Control: no-store, no-cache, max-age=0
Pragma: no-cache
|.*.URL-ID: (252) http://i29.fastpic.ru/big/2011/1220/87/d6900e54e897482f5ef88a97bd999e87.jpg
Connection: keep-alive
Content-Length: 91656

So Connection and Content-Length seem to be reordered
Took out HandyCache so chain is Fiddler->Proxo and here are the headers from Fiddler
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 21 Dec 2011 16:08:09 GMT
Content-Type: image/jpeg; PrxMsg: Filter Image
Last-Modified: Tue, 20 Dec 2011 09:24:39 GMT
Accept-Ranges: bytes
Cache-Control: no-store, no-cache, max-age=0
Pragma: no-cache
|.*.URL-ID: (304) http://i29.fastpic.ru/big/2011/1220/87/d6900e54e897482f5ef88a97bd999e87.jpg
Content-Length: 91656

конечно тут есть вопрос и к фильтрам проксо, но почему HandyCache не видит заголовок в последней строчке? Или это я чтото напортачил с настройками?
Заранее спасибо.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #1 : 21 декабря 2011, 23:08:01 »

но почему HandyCache не видит заголовок в последней строчке?

В определенных случаях HC трансформирует Content-Length в Transfer-Encoding: chunked.
Это делается, например, когда в расширении производится обработка тел ответов.

А в чем конкретно проблема? С чего ты решил, что HC не видит Content-Length? В Мониторе HC колонка "Размер" заполнена для этих картинок?
Сообщить модератору   Записан
sh8an
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #2 : 22 декабря 2011, 08:51:46 »

С чего ты решил, что HC не видит Content-Length? В Мониторе HC колонка "Размер" заполнена для этих картинок?
вот именно не заполнена. у меня какая то странная проблема с фастпиком, если на странице много больших картинок с этого хоста то часть картинок не докачивается до конца, обрывается. вот поэтому и обратил внимание что колонка не заполнена и выяснилось что это связано с Content-Length.
Кстати нет ни одного включенного расширения.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #3 : 22 декабря 2011, 14:33:32 »

Приложи отладочный лог HC после загрузки проблемных картинок.


Добавлено: 22 Декабря 2011, 14:28:26

PS. Если HC не проставляет размер в мониторе, то вероятно его нет и в заголовке, полученном от Проксомитрона. Фильтры Проксомитрона отключать пробовал?
Сообщить модератору   Записан
sh8an
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #4 : 22 декабря 2011, 15:05:05 »

Как уже писал, заголовок есть так как Fiddler который стоит после HandyCache в цепочке его видит, и если убрать HandyCache тоже. Просто заголовок в очереди самый последний а не в середине как обычно.

Если проксо поставить в байпасс то конечно очередность заголовков не меняется и все работает нормально.

* Noname1.7z (2.2 Кб - загружено 25 раз.)
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #5 : 22 декабря 2011, 16:14:03 »

Судя по логу, который ты приложил, Content-Length в заголовке от Проксомитрона HC не получал!
В логе видно, что HC получает картинку кусками по методу Transfer-Encoding: chunked. В том же виде он передает ее дальше.
Где Content-Length берет Fiddler не понятно. Вероятно, он формирует его сам после получения финального "куска".


Добавлено: 22 Декабря 2011, 15:45:13

Кстати, после получения финального "чанка" от Проксомитрона в мониторе HC в колонке "Размер" должно появиться значение. Если картинка получена от Проксомитрона не полностью, то ее размер в мониторе не появится.
Сообщить модератору   Записан
sh8an
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #6 : 22 декабря 2011, 16:24:55 »

сомневаюсь что фиддлер сам меняет raw заголовки.тем более если из цепочки исключить хэнди то и Transfer-Encoding: chunked нету
в проксо нашел фильтр который вносил изменения
менялось содержание заголовка Content-Type: image/jpeg на Content-Type: image/jpeg; PrxMsg: Filter Image
это почему то приводило к пересортировке и Content-Length уходил вниз.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #7 : 22 декабря 2011, 16:44:20 »

Я тебе еще раз говорю, по твоему логу видно, что Content-Length НС не получал от Проксомитрона вообще и сортировка заголовков абсолютно тут ни при чем!
« Последнее редактирование: 22 декабря 2011, 16:58:21 от DenZzz » Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #8 : 22 декабря 2011, 17:13:55 »

sh8an
Я бы посоветовал Вам вместо фиддлер взять какой-нибудь сниффер, например, HttpAnalyzerStd или CommView. Тогда Вы увидите какие заголовки получает каждая программа и при этом рабочая цепочка не будет меняться.
Сообщить модератору   Записан
sh8an
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #9 : 22 декабря 2011, 17:40:39 »

ок спасибо
попробую
Сообщить модератору   Записан
HKLM
Старожил
****

Репутация: +4/-1
Offline Offline

Сообщений: 305


« Ответ #10 : 23 декабря 2011, 08:31:58 »

сомневаюсь что фиддлер сам меняет raw заголовки.тем более если из цепочки исключить хэнди то и Transfer-Encoding: chunked нету
в проксо нашел фильтр который вносил изменения
менялось содержание заголовка Content-Type: image/jpeg на Content-Type: image/jpeg; PrxMsg: Filter Image
это почему то приводило к пересортировке и Content-Length уходил вниз.

Поставил себе комплект sidki-2010-10-23 для прокса. Теперь и у меня не передает Content-Length. В браузер вставлял:http://i29.fastpic.ru/big/2011/1220/87/d6900e54e897482f5ef88a97bd999e87.jpg
CommView показал, что это прокс так отдает заголовок.
Прокс>HC
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 23 Dec 2011 04:03:17 GMT
Content-Type: image/jpeg; PrxMsg: Filter Image
Last-Modified: Tue, 20 Dec 2011 09:24:39 GMT
Accept-Ranges: bytes
Cache-Control: public, max-age=86400
Transfer-Encoding: chunked

HC>Опере
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 23 Dec 2011 04:03:17 GMT
Content-Type: image/jpeg; PrxMsg: Filter Image
Last-Modified: Tue, 20 Dec 2011 09:24:39 GMT
Accept-Ranges: bytes
Cache-Control: public, max-age=86400
Transfer-Encoding: chunked
Connection: keep-alive

Content-Length.rar это отладочный лог НС.

* Content-Length.rar (16.72 Кб - загружено 18 раз.)
« Последнее редактирование: 23 декабря 2011, 08:42:26 от HKLM » Сообщить модератору   Записан
sh8an
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #11 : 23 декабря 2011, 08:54:30 »

угу да это верно.
у сидки есть фильтр "Content-Type: 5b Filter sel. Image Types" который включал фильтрацию для определенных типов и из-за которого все это и происходило.
так что прошу прощения и спасибо всем за ответы
Сообщить модератору   Записан
Страниц: [1]   Вверх
  Отправить эту тему    Печать  

 
Перейти в: