информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыСтрашный баг в WindowsСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Крупный взлом GoDaddy 
 Просроченный сертификат ломает... 
 Phrack #70/0x46 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / sysadmin
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Спасибо за помошь :) rfc2616 - мой любимый rfc :) 19.09.06 19:58  Число просмотров: 2505
Автор: drpops Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Спасибо за помошь :) rfc2616 - мой любимый rfc :)
> Ы?
Честно говоря из вышесказанного непонятно куда отнести заголовок Set-Cookie и опять же не совсем ясно почему какие-то заголовки можно менять а какие нет :) Принципиального отличия не вижу.

Я поступил проще, ASP движок ругнулся что мол генерация страницы начата и сейчас уже нельзя менять заголовок (при включенной буферизации такого не было) Я взял этот кусок кода, где кука вешается повыше переместил и все дела. А в копаться в документации че-то в лом было.

Но это опять же к тому что "тщательнЕе надо" (© М.М. Жванецкий) скрипты писать :)
<sysadmin>
Как заставить IIS (виндовый вебсервер) возвращать chunked ответ 18.09.06 17:14  
Автор: drpops Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Мне нужно заставить чтоб IIS возвращал chunked ответ для тестирования локально.
Более того я знаю одного мужика который получил такой эффект и из-за этого у него некоторые проблемы. При запросе его сервер возвращает chunked ответ, если запрашивается ASP страница.
В заголовке ответа есть такое поле
Tranfer-Encoding: chunked
Ну и дальше в соответсвии с RFC
Если запрашиваетс любая статическая информация, то все как обычно. Как это у него получается -объяснит не может.
Вопрос:
Кто нибудь знает как это сделать? Мне этот режим нужен для тестов.
Есть подозрение, что как-то можно в ASP коде страницы как-то это задать. В MSDN порылся ничего не нашел (плохо искал?). Может кто-нибудь подкинет хоть какую-нибудь инфу по теме?

Кста, в мсдн нашел только как разрешать chunked режим (переменная AspEnableChunkedEncoding). Но она и так включена по умолчанию.
Chunked encoding придуман для того, чтобы отдавать страницы, размер которых неизвестен заранее 18.09.06 21:20  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Вопрос:
> Кто нибудь знает как это сделать? Мне этот режим нужен для
> тестов.

Чаще всего, сервак буферизирует какую то часть страницы (около килобайта), если за этот килобайт страница закончилась, то transfer-encoding используется identity, а длина указывается в Content-Length.
Иначе формируется хэдер, в котором указано chunked TE, а уже полученные данные загоняются собственно в первый chunk.

> Есть подозрение, что как-то можно в ASP коде страницы
> как-то это задать. В MSDN порылся ничего не нашел (плохо
> искал?). Может кто-нибудь подкинет хоть какую-нибудь инфу
> по теме?
>
> Кста, в мсдн нашел только как разрешать chunked режим
> (переменная AspEnableChunkedEncoding). Но она и так
> включена по умолчанию.

Есть подозрение, что если ты сгенерируешь (обязательно скриптом, ибо размер статической html страницы серверу известен всегда) страницу на несколько десятков килобайт, то она начнет отдаваться еще до того, как ты закончишь генерацию и как раз в chunked TE.
Да наверное больше. Может порядка 64К? во всяком случае 19.09.06 11:32  
Автор: drpops Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Чаще всего, сервак буферизирует какую то часть страницы
> (около килобайта), если за этот килобайт страница
Да наверное больше. Может порядка 64К? во всяком случае

> Есть подозрение, что если ты сгенерируешь (обязательно
> скриптом, ибо размер статической html страницы серверу
> известен всегда) страницу на несколько десятков килобайт,
> то она начнет отдаваться еще до того, как ты закончишь
> генерацию и как раз в chunked TE.
Очень здравая мысль, спасибо. Я и сам это смутно продозревал, но как-то до конца не додумал. Обязательно попробую и сообщу о результатах.

Кста, тот клиент говорил что у него страницы получаются по 300 с чем-то килобайт, так что вполне возможно что IIS использует chunked режим при превышении какого-то порога
Хотя вот я сейчас только что попробовал у себя IIS отдал обычным способом страницу
Content-Length: 115621
так что есть над чем подумать. Может это как-то зависит от наличия физ памяти на компе или еще от чего.
Получил я chunked режим. Ура!!! 19.09.06 12:27  
Автор: drpops Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Получил я chunked режим. Ура!!!
если в начало ASP кода ставишь
Response.Buffer = false
то страница отдается в chunked режиме при превышении какого-то размера. Правда появляются кое-какие ограничения по АСП коду. Например нельзя писать что нибудь в заголовок (например куку) если страница уже начала формироваться и заголовок уже сформирован.
Но это легко обходится. Типа аккуратнее писать надо :)
Когда уже написал, у меня появилась мысль 19.09.06 13:48  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Что перед переключением в chunked режим ожидается не какой то конкретный размер, а какое то кокретное время. Вся идея chunked режима в том, что начать передавать как можно быстрее, чтобы клиент мог решить нужно оно ему или нет. Если вся страница сгенерилась очень быстро, то соответственно и передастся она вся, а вот если скрипт разбавить sleep-ами, то вполне возможно IIS все таки перескочил бы в chunked без дополнительных усилий

> Получил я chunked режим. Ура!!!
> если в начало ASP кода ставишь
> Response.Buffer = false
> то страница отдается в chunked режиме при превышении
> какого-то размера. Правда появляются кое-какие ограничения
> по АСП коду. Например нельзя писать что нибудь в заголовок
> (например куку) если страница уже начала формироваться и
> заголовок уже сформирован.

Заголовки писать можно, но не все, а только entity-header-ы. Например дату последнего изменения (для кеша) можно указать после генерации. Эти хедеры попадают в трейлер chunked передачи и абсолютно равноправны с прочими хэдерами.

> Но это легко обходится. Типа аккуратнее писать надо :)
Ну вообще да, message-header-ы (типа той же куки) не шибко зависят от контента и могут быть посланы заранее, а entity-header-ы слать можно.
Чайницкий вопрос можно ;): а что такое "entity-header-ы" и в... 19.09.06 14:20  
Автор: drpops Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Заголовки писать можно, но не все, а только
> entity-header-ы. Например дату последнего изменения (для
> кеша) можно указать после генерации. Эти хедеры попадают в
> трейлер chunked передачи и абсолютно равноправны с прочими
> хэдерами.
Чайницкий вопрос можно ;): а что такое "entity-header-ы" и в чем их принципиальное отличие от других хедеров
Дык rfc2616 в помощь 19.09.06 18:21  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Чайницкий вопрос можно ;): а что такое "entity-header-ы" и
> в чем их принципиальное отличие от других хедеров

        Request       = Request-Line              ; Section 5.1
                        *(( general-header        ; Section 4.5
                         | request-header         ; Section 5.3
                         | entity-header ) CRLF)  ; Section 7.1
                        CRLF
                        [ message-body ]          ; Section 4.3

       Response      = Status-Line               ; Section 6.1
                       *(( general-header        ; Section 4.5
                        | response-header        ; Section 6.2
                        | entity-header ) CRLF)  ; Section 7.1
                       CRLF
                       [ message-body ]          ; Section 7.2

       general-header = Cache-Control            ; Section 14.9
                      | Connection               ; Section 14.10
                      | Date                     ; Section 14.18
                      | Pragma                   ; Section 14.32
                      | Trailer                  ; Section 14.40
                      | Transfer-Encoding        ; Section 14.41
                      | Upgrade                  ; Section 14.42
                      | Via                      ; Section 14.45
                      | Warning                  ; Section 14.46

       request-header = Accept                   ; Section 14.1
                      | Accept-Charset           ; Section 14.2
                      | Accept-Encoding          ; Section 14.3
                      | Accept-Language          ; Section 14.4
                      | Authorization            ; Section 14.8
                      | Expect                   ; Section 14.20
                      | From                     ; Section 14.22
                      | Host                     ; Section 14.23
                      | If-Match                 ; Section 14.24
                      | If-Modified-Since        ; Section 14.25
                      | If-None-Match            ; Section 14.26
                      | If-Range                 ; Section 14.27
                      | If-Unmodified-Since      ; Section 14.28
                      | Max-Forwards             ; Section 14.31
                      | Proxy-Authorization      ; Section 14.34
                      | Range                    ; Section 14.35
                      | Referer                  ; Section 14.36
                      | TE                       ; Section 14.39
                      | User-Agent               ; Section 14.43

       response-header = Accept-Ranges           ; Section 14.5
                       | Age                     ; Section 14.6
                       | ETag                    ; Section 14.19
                       | Location                ; Section 14.30
                       | Proxy-Authenticate      ; Section 14.33
                       | Retry-After             ; Section 14.37
                       | Server                  ; Section 14.38
                       | Vary                    ; Section 14.44
                       | WWW-Authenticate        ; Section 14.47

       entity-header  = Allow                    ; Section 14.7
                      | Content-Encoding         ; Section 14.11
                      | Content-Language         ; Section 14.12
                      | Content-Length           ; Section 14.13
                      | Content-Location         ; Section 14.14
                      | Content-MD5              ; Section 14.15
                      | Content-Range            ; Section 14.16
                      | Content-Type             ; Section 14.17
                      | Expires                  ; Section 14.21
                      | Last-Modified            ; Section 14.29
                      | extension-header

       extension-header = message-header


---

Ы?
Спасибо за помошь :) rfc2616 - мой любимый rfc :) 19.09.06 19:58  
Автор: drpops Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Спасибо за помошь :) rfc2616 - мой любимый rfc :)
> Ы?
Честно говоря из вышесказанного непонятно куда отнести заголовок Set-Cookie и опять же не совсем ясно почему какие-то заголовки можно менять а какие нет :) Принципиального отличия не вижу.

Я поступил проще, ASP движок ругнулся что мол генерация страницы начата и сейчас уже нельзя менять заголовок (при включенной буферизации такого не было) Я взял этот кусок кода, где кука вешается повыше переместил и все дела. А в копаться в документации че-то в лом было.

Но это опять же к тому что "тщательнЕе надо" (© М.М. Жванецкий) скрипты писать :)
Да в общем то все понятно [upd] 19.09.06 22:10  
Автор: amirul <Serge> Статус: The Elderman
Отредактировано 19.09.06 22:14  Количество правок: 1
<"чистая" ссылка>
> Спасибо за помошь :) rfc2616 - мой любимый rfc :)
> > Ы?
> Честно говоря из вышесказанного непонятно куда отнести
> заголовок Set-Cookie и опять же не совсем ясно почему
> какие-то заголовки можно менять а какие нет :)
> Принципиального отличия не вижу.

http message может быть либо request-ом либо response-ом
И request и response состоят из start-line-а, хэдеров и тела. entity - полезная нагрузка, которая цепляется к http-сообщению. Вот и разделяются хэдеры, имеющие отношение к самому протоколу (сообщению) и хэдеры, связанные с этой самой нагрузкой. не-entity-хэдеры есть общие и у request-а и respnse-а, а есть раздельные. Вот их то и нельзя переносить в конец. Все остальные - можно.

> Я поступил проще, ASP движок ругнулся что мол генерация
> страницы начата и сейчас уже нельзя менять заголовок (при
> включенной буферизации такого не было) Я взял этот кусок
> кода, где кука вешается повыше переместил и все дела. А в
> копаться в документации че-то в лом было.

Есть такой general-header как Trailer. В трейлеры нельзя выносить хэдеры Content-Length, Transfer-Encoding и Trailer (хотя странно, последние два не являются entity хэдерами в соотвествии с тем же rfc). Просто указываешь при помощи Trailer какие хэдеры пойдут в трейлере (хотя 14.40 говорит, что ты не обязан этого делать) и сервак должен смириться с этим.

> Но это опять же к тому что "тщательнЕе надо" (© М.М.
> Жванецкий) скрипты писать :)

-----------------

А понятно то, что Set-Cookie относится к extension-ам, потому как по грамматке только в него и может свернуться
1






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2021 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach