Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2011.06.12;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по НТТР   Найти похожие ветки 

 
FireMan_Alexey ©   (2009-03-23 14:19) [0]

У НТТР версии 1.1 есть возможность посылать по одному соединению N-ое кол-во запросов к одному и тому же серверу.
Вопрос:
1) как быть когда сервер в ответе не присылает длину сообщения в контент-ленгс?
2) как быть с методом CONNECT? в РФЦ 2616(2068) сказано что необходимо для прокси создать тунель, означает ли это, что если пришел запрос с методом коннект, то за ним не может следовать другие запросы?
И еще вопрос :)
Из РФЦ с полным путем необходимо обращаться только к прокси-серверам. Т.е. :

Get http://ya.ru/ http/1.1
Host: ya.ru


А для браузеров необходимо обращаться вот по относительному адресу:

Get / http/1.1
Host: ya.ru


Как быть с методом Connect?

CONNECT MYHOST.COM:443  HTTP/1.1
HOST: MYHOST.COM


Заменять его на:

CONNECT /  HTTP/1.1
HOST: MYHOST.COM:443


Или оставлять как есть?
Просто когда я оставлял как есть "AS-IS" с методами GET и POST, как сказано было в РФЦ, стал наблюдать ооочень большие глюки с тем же яндексом и многими другими сайтами...


 
FireMan_Alexey ©   (2009-03-23 14:22) [1]

Да, забыл сказать я прокси пишу :)


 
Медвежонок Пятачок ©   (2009-03-23 14:25) [2]

А для браузеров необходимо обращаться вот по относительному адресу:

Get / http/1.1
Host: ya.ru

Как быть с методом Connect?


Коннект не имеет никакого отношение ни к гет ни к пост ни к хеад.
Это совсем иная опера.


 
FireMan_Alexey ©   (2009-03-23 14:28) [3]

т.е. АЗ-ИЗ :)


 
Медвежонок Пятачок ©   (2009-03-23 14:30) [4]

Просто когда я оставлял как есть "AS-IS" с методами GET и POST, как сказано было в РФЦ, стал наблюдать ооочень большие глюки с тем же яндексом и многими другими сайтами...

Что ты оставлял, и что за глюки были?
И при чем здесь сервер яндекса и твой прокси с коннектом?


 
FireMan_Alexey ©   (2009-03-23 14:35) [5]

Смотри пробуй обратиться к яндексу по такой схеме:

GET http://yandex.ru/ http/1.0
Host:yandex.ru

По следующему запросу на поиск отлавливаю такую фигню:

GET yandex.ruhttp://yandex.ru/ http/1.0
Host:yandex.ruhttp

А если меняю за место http://yandex.ru/ на:

GET / http/1.0
Host:yandex.ru

То все нормально работает...


 
Медвежонок Пятачок ©   (2009-03-23 14:36) [6]

и при чем здесь коннект?


 
Медвежонок Пятачок ©   (2009-03-23 14:38) [7]

интересно, а за каким лешим у тебя в аргументе для гета идет учточнение
протокола?

возможны варианты что ли?
:)


 
FireMan_Alexey ©   (2009-03-23 14:39) [8]

Ну я подумал, что раз это правило относиться в GET POST HEAD, то возможно и к CONNECT-у тоже :). Меня больше интересует вопрос, о том что делать когда клиент с НТТР 1.1 послал кучу запросов, а сервер при ответе не указал для какого-нибудь файла его длину. мне это важно для того, чтобы сделать кэширование :)


 
Медвежонок Пятачок ©   (2009-03-23 14:42) [9]

если сервер не указал длину контента запрошенного ресурса, значит качать надо все до дисконнекта с сервером.

только снова : при чем здесь вообще коннект?


 
FireMan_Alexey ©   (2009-03-23 14:45) [10]

Коннект в смысле надо было менять у него заголовок или нет?
Но как я понимаю, что не надо. Или прийдется выяснять экспериментальным путем :(


 
Медвежонок Пятачок ©   (2009-03-23 14:54) [11]

коннект - он дальше прокси не уходит.
это всего лишь просьба клиента к прокси: "передвай все что я тебе дам тому хосту на тот порт"

кстати о птичках:
если ты пишешь коннект-прокси, то заморачиваться и затачиваться на http протокол нельзя. этот прокси должен обслуживать любой протокол, а не только http.


 
FireMan_Alexey ©   (2009-03-24 00:10) [12]

Любой - это FTP, SOCKS(4,4a,5)?
У меня есть нормально реализованный транспорт(в смысле TCP) между клиентом и сервером (умеющий понижать трафик).
Сейчас постепенно реализую HTTP, а за тем возьмусь и за остальные.
Но пока на данном этапе у меня HTTP-прокси с поддержкой метода CONNECT  :)


> коннект - он дальше прокси не уходит.
> это всего лишь просьба клиента к прокси: "передвай все что
> я тебе дам тому хосту на тот порт"


Т.е. ты хочеш сказать, что принимая "пакет" с методом CONNECT я не должен пересылать сам заголовок дальше? Чет я совсем запутался...
А я вроде как передаю дальше :-\


 
Медвежонок Пятачок ©   (2009-03-24 00:50) [13]

Т.е. ты хочеш сказать, что принимая "пакет" с методом CONNECT я не должен пересылать сам заголовок дальше? Чет я совсем запутался...
А я вроде как передаю дальше :-\


Еще раз и последний. Для тех кто.

Метод "коннект" - это "внутреннее дело" двух людей. Прокси сервера и клиента этого прокси.

Клиент приходит к прокси и говорит ему (в методе коннект): "эй, ты, прокси, установи tcp соединение с хостом/портом, указанным в параметрах метода коннект!"

И все.
Прокси должен установить соединение и после этого аккуратно гнать туда, все, что после этого пришлет ему клиент и все, что на это отвечает удаленный хост клиенту.

Никуда дальше самого прокси эта команда коннект не уходит.
Так же как не уходит дальше прокси весь служебный обмен по авторизации клиента на этом прокси, если авторизация там требуется.


 
FireMan_Alexey ©   (2009-03-24 00:55) [14]

В РФЦ 2616 написано что должен предоставить тунель. Но что резать заголовок ничего не сказано... :(

CONNECT
This specification reserves the method name CONNECT for use with a proxy that can dynamically switch to being a tunnel (e.g. SSL tunneling [44]).


 
FireMan_Alexey ©   (2009-03-24 00:58) [15]

Извини не успел прочитать [13]
На [14] можно забить!

Огромное спасибо за комментарии и терпение! :)
Пошел переделывать...


 
Тимохов ©   (2009-03-24 11:22) [16]

насчет длины.
есть несколько способов передачи.
можно задавать content-length XOR можно задавать transfer-encoding: chanked. Т.е. передавать кусками. Если хочешь разобраться, то поставь себе wireshark, там это наглядно видно.

правда придется поискать, чтобы передача была именно кусками. Но это многие сервера делают. Если не ошибаюсь, то в 1.1. именно передача кусками является предпочтительной.


 
Медвежонок Пятачок ©   (2009-03-24 11:34) [17]

по идее коннект-прокси вообще не должен заморачиваться с этими фичами http протокола.
так как гонять через него можно все что угодно.


 
FireMan_Alexey ©   (2009-03-25 12:56) [18]

>Медвежонок Пятачок ©

Согласен, но сам CONNECT, он в НТТР протоколе описан :) и возможно перед тем как коннект выполнить, мне клиент пришлел OPTIONS или попробует GET-ом связаться.(так аська делает, но с точностью до наоборот вначале "коннект", а потом "Гет")
И еще вопрос по теме, на Конект, прокси должен как то отвечать клиенту типа статус 100 "Продолжать" или тупо соединил и пересылай все что угодно?


 
Медвежонок Пятачок ©   (2009-03-25 15:03) [19]

конечно должен.
там ведь еще в ответ на коннект может вообще быть : "давай авторизуйся прежде чем меня юзать"



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2011.06.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.004 c
2-1299244957
novichek
2011-03-04 16:22
2011.06.12
Почти уникальный ID


1-1233992383
Oleg_teacher
2009-02-07 10:39
2011.06.12
Equation+RxRichEdit


6-1237587638
1uka
2009-03-21 01:20
2011.06.12
как заставить TIdTCPClient "слушать" ?


3-1260431182
fd979
2009-12-10 10:46
2011.06.12
Проблема BDE и tnsnames.ora


2-1299053417
Гость
2011-03-02 11:10
2011.06.12
Как раскрасить title в DBGrid под Windows 7?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский