Re: Re: HTTPCall error

От: Aleksey Silin <CGatePro_at_mx_ru>
Дата: Wed 26 Oct 2005 - 12:12:14 MSD

Vladimir A. Butenko wrote:

> On Wed, 26 Oct 2005 11:19:40 +0400
> "Aleksey Silin" <CGatePro@mx.ru> wrote:
>
>> Vladimir A. Butenko wrote:
>>
>>> Ну, не любит он HTTP/1.0.
>>> Чай, не 1995 год на дворе...
>>
>> Это squid так отвечает, если его нет то ответ HTTP/1.1.
>> Значит при прозрачном проксировании функция HTTPCall работать не
>> будет, жаль......
>
> Что такое "прозрачное проксирование"? У Вас что, нету прокси, который
> поддерживал бы HTTP/1.1? Собственно, HTTP/1.1 в основном ради проксей
> и делался...

Прозрачное проксирование это редирект траффика идущего на 80 порт на порт прокси сервера без перенастройки софта у большого колличества клиентов. Из того что я знаю, squid один из лучших проксей и с проблемой HTTP/1.0 я сталкиваюсь первый раз.
В общем то я это уже обошел и проблема сейчас получить нормальный ответ от сервера.

>>>> 18:15:48.66 5 HTTPO-00029 inp: Transfer-Encoding: chunked
>>>> 18:15:48.66 5 HTTPO-00029 inp: Content-Type: text/html
>>>> 18:15:48.66 5 HTTPO-00029 inp:
>>>> 18:15:48.66 1 HTTPO-00029 no Content-Length field
>>>
>>> Опять же - всё честно сказал.
>>> Вы хотите keep-alive, при этом не написали Content-Length.
>>
>> Я наоборот keep-alive не хочу. Почему CGP подставляет этот параметр
>> мне непонятно.
>
> Потому что он его хочет. Это его право. Ваше право отказаться. А он
> его хочет, чтобы работало реально, под нагрузкой - чтобы не открывать
> каждый раз соединения - Вы же, скорее всего к одному и тому же серверу
> будете обращаться.
> А CGatePro будет держать некий кэш этих соединений. Но если Вы
> скажете, что не хотите keep-alive - он Вас простит.
>
>> Из всех параметром запроса я указал только GET и все:
>> parameter.("body") = "";
>> parameter.("Content-Type") = "";
>> parameter.("Content-Subtype") = "";
>> parameter.("method") = "GET ";
>> many=HTTPCall("http://www.mail.ru/",parameter);
>>
>> Подскажите пожалуйста как мне запретить CGP слать этот параметр?
>
> Никак, потому что незачем. Это - пожелание клиента, выполнять его Ваш
> сервер не обязан. Но если он не хочет быть "сервером для малого
> офиса", то лучше, чтобы выполнял.

Я перефразирую свой вопрос:
Мне всего лишь надо от сервера получить ответ. Вот сессия с реальным сервером. Заголовков в ответе минимум. Зачем CGP понадобился опять Content-Length?

11:05:55.03 4 HTTPO-00033 connecting to [x.x.x.x:80]
11:05:55.24 4 HTTPO-00033 opening protocol
11:05:55.24 5 HTTPO-00033 out: GET /get_info.php?v1=34534&d1=324333 
HTTP/1.1\r\nHost: x.x.x.x\r\nConnection: keep-alive\r\nUser-Agent: CommuniGatePro\r\n\r\n
11:05:55.46 5 HTTPO-00033 inp: HTTP/1.1 200 OK
11:05:55.46 5 HTTPO-00033 inp: Date: Wed, 26 Oct 2005 07:05:55 GMT
11:05:55.46 5 HTTPO-00033 inp: Server: Segfault/0.2.1
11:05:55.46 5 HTTPO-00033 inp: Keep-Alive: timeout=15, max=100
11:05:55.46 5 HTTPO-00033 inp: Connection: Keep-Alive
11:05:55.46 5 HTTPO-00033 inp: Transfer-Encoding: chunked
11:05:55.46 5 HTTPO-00033 inp: Content-Type: text/plain
11:05:55.46 5 HTTPO-00033 inp:
11:05:55.46 1 HTTPO-00033 no Content-Length field

А еще лучше посоветуте где можно почитать хороший мануал по CG/PL с примерами? В поисковиках находятся кучу страниц про то как хорошо этот язык документирован, а вот реальной документации, примеров практически нет. На сайте достаточно скупо все описано и приходится методом проб и ошибок все это находить. Получено Wed Oct 26 08:12:17 2005

Этот архив был сгенерирован hypermail 2.1.8 : Tue 21 Feb 2006 - 03:17:25 MSK