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

Вниз

Proxy-Server вопрос по RFC2068   Найти похожие ветки 

 
FireMan_Alexey   (2008-07-02 18:45) [0]

Клиент моему серверу:

GET http://yandex.ru/yandsearch?text=akiam HTTP/1.0
Accept=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language=ru
Cookie=yandexuid=2596031214934954; yabs-frequency=/2///fGAH0m820m00
User-Agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host=yandex.ru
Proxy-Connection=Keep-Alive


Яндекс отвечает:

HTTP/1.1 302 Found
Date=Wed, 02 Jul 2008 14:22:34 GMT
Server=Apache/1.3.29 (Unix) mod_perl/1.29 mod_deflate/1.0.21 rus/PL30.19
Location=http://yandex.ruhttp://yandex.ru/yandsearch?text=akiam&lr=187
Connection=close
Content-Type=text/html


Собственно вопрос, почему апаче склеивает имя хоста с конкретным урлом запроса.
У меня когда посылаю запрос на прямую нормально отрабатывает, а когда через прокси, то вот такая ерунда!
Сам браузер воспринимает как переадресацию на yandex.ruhttp.
Как этого избежать может кто-то сталкивался с данной проблемой.
Логика прокси принял переслал я не меняю данные, а  "=" после ключевых слов, а не ":" сделано для удобства просмотра отношения к траспортной логике не имеет!

Я посмотрел в РФЦ там сказано, что должен быть абсолютный урл запроса а тут какая-то склейка непонятная для меня и как ее обрабатывать? тем более, что в моем случае нормально не обрбатывает браузер.


 
Anatoly Podgoretsky ©   (2008-07-03 08:35) [1]

> FireMan_Alexey  (02.07.2008 18:45:00)  [0]

Это ошибка, только где, в программе, в прокси, в Яндексе.


 
umbra ©   (2008-07-03 13:42) [2]


> Собственно вопрос, почему апаче склеивает имя хоста с конкретным
> урлом запроса.
> У меня когда посылаю запрос на прямую нормально отрабатывает,
>  а когда через прокси, то вот такая ерунда!


это не апач, а прокси кривой :) и он таки меняет данные :)


 
FireMan_Alexey   (2008-07-03 21:28) [3]

>umbra ©

Это результат выполнения RECV-a,
только у меня в прокси для тестирования выведено окно, в которое он выводит по строчно заголовок.
Сам заголовок определяет по #13#10#13#10 за ним данные которые игнорируются!
Есть буфер в который собирается информация до отправки к серверу, на тот случай если заголовок будет приходить частями!
Буфер - мой класс распределения памяти, который уже не первый год использую и в нем ошибок быть не может!
Да мой прокси по сути испоьзует только HTTP протокол.

Вот кусок кода принятия данных:

Const
 MaxRead=8192;

Function  TMyProxyClient.ReadData:Boolean; //в случае True необходимо закрытие сокета
Type
 TBuffType=Array of char;
Var
 CRead   :Integer;
 CanRead :Cardinal;
 tBuff   :TBuffType;
Begin
 Result:=False;
 While True do
   Begin
     CRead:=MaxRead;
     Try
       SetLength(tBuff,CRead);
     Except
       Break;
     End;
     CRead:=Recv(Sock.Sock,TBuff[0],CRead,0);
     IF (CRead=0) Then
       Begin
         Result:=True;
         Break;
       End;
     IF CRead=Socket_Error Then
       Begin
         FError:=WSAGetLastError;
         If FError=WSAEWOULDBLOCK Then
           Begin
             FError:=0;
           End
         Else Result:=True;
         Break;
       End;
     Sock.Mem.Position:=Sock.Mem.Size;
     Sock.Mem.Write(TBuff[0],CRead);
     Inc(Sock.CountRecv,CRead);
   End;
End;


 
McSimm ©   (2008-07-03 21:33) [4]


> GET http://yandex.ru/yandsearch?text=akiam HTTP/1.0

Сомнение вызывает

А если так:
GET /yandsearch?text=akiam HTTP/1.0
Host=yandex.ru


 
FireMan_Alexey   (2008-07-03 21:38) [5]

И вот в самом tBuff уже такие данные как я описал в вопросе!
Проверял при выключенном Файрволе.
Я просто не могу понять, почему при прямом подключении все работает, а при подключении через проксю нет?
Я понимаю, что т.к. моя прокси принимает только HTTP запрос с наличием
стороки
HOST: <имя хоста>[:<порт>]
иногда не отрабатывают некоторые FLASH-и, но не могу понять почему?
Как я понимаю в HTTP/1.* это поле обязательное для всех запросов!
Хотя не могу точно утверждать по этому поводу, т.к. у меня с Английским плоховато и до самом РФЦ я избирательно читал :)


 
FireMan_Alexey   (2008-07-03 21:40) [6]

>McSimm ©
Предлагаеш убирать из заголовка строку с именем сервера?


 
McSimm ©   (2008-07-03 21:53) [7]

Попробовать либо использовать абсоютный путь без заголовка Host
либо относительный, с использованием Host, как я указал.

Возможно комбинация абсолютного URI и хоста и приводит в замешательство сервер ?


 
FireMan_Alexey   (2008-07-03 22:01) [8]

Дело в том, что это последующий запрос от ИЕ:
GET http://yandex.ruhttp//yandex.ru/yandsearch?text=akiam&lr=187 HTTP/1.0
Accept=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Referer=http://www.yandex.ru
Accept-Language=ru
Proxy-Connection=Keep-Alive
User-Agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host=yandex.ruhttp


 
McSimm ©   (2008-07-03 22:33) [9]

Все же придется трансформировать абсолютный в относительный.

Вот результат telnet с абсолютным uri:

GET http://yandex.ru/yandsearch?text=akiam HTTP/1.0
Host:yandex.ru

HTTP/1.1 302 Found
Date: Thu, 03 Jul 2008 18:26:49 GMT
Server: Apache/1.3.29 (Unix) mod_perl/1.29 mod_deflate/1.0.21 rus/PL30.19
Set-Cookie: yandexuid=2412781215109609; path=/; domain=.yandex.ru; expires=Friday, 31-Dec-10 23:59:59 GMT
Location: http://yandex.ruhttp://yandex.ru/yandsearch?text=akiam&lr=187
Connection: close
Content-Type: text/html


 
McSimm ©   (2008-07-03 22:33) [10]

А вот то же самое с относительным

GET /yandsearch?text=akiam HTTP/1.0
Host:yandex.ru

HTTP/1.1 302 Found
Date: Thu, 03 Jul 2008 18:29:58 GMT
Server: Apache/1.3.29 (Unix) mod_perl/1.29 mod_deflate/1.0.21 rus/PL30.19
Set-Cookie: yandexuid=1159791215109798; path=/; domain=.yandex.ru; expires=Friday, 31-Dec-10 23:59:59 GMT
Location: http://yandex.ru/yandsearch?text=akiam&lr=187
Connection: close
Content-Type: text/html


 
McSimm ©   (2008-07-03 22:36) [11]

В случае с абсолютным uri наличие / отсутствие заголовка Host не влияет


 
umbra ©   (2008-07-03 23:23) [12]

а по-моему это развод :) код в [3] - полный бред


 
McSimm ©   (2008-07-03 23:30) [13]

код не при чем. я проверил, проблема есть.

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


 
FireMan_Alexey   (2008-07-04 16:46) [14]

>McSimm ©

Спасибо буду переделывать :)

>umbra ©


> а по-моему это развод :) код в [3] - полный бред


Я привел пример работающего кода, я тестировал его локально (пока не было интернет) с апачами 1.3.33
Если тебе не нравится логика, то извини на оптимальный код не претендую,
но скажем мне удобней вызвать

If ReadData(ClientSock,ClientBuff) Then
Begin  
 Close(ClientSock);
End;


именно так, а вы я пишите как вам удобно и не кто ВАС за это не критикует! :)
Если это было написано просто в шутку, то я думаю здесь есть отдельная ветвь для тех кому хочеться просто поговорить!!!

Всем спасибо буду теперь изменять данные в запросе



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

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

Наверх





Память: 0.49 MB
Время: 0.007 c
15-1262571775
uw
2010-01-04 05:22
2010.03.21
Что и требовалось доказать


15-1258960395
desc
2009-11-23 10:13
2010.03.21
Длинные имена файлов


15-1262247832
12
2009-12-31 11:23
2010.03.21
Работа сайта


1-1244548514
Валигози
2009-06-09 15:55
2010.03.21
Как прикрутить к своему приложению "7z.dll"?


15-1262599046
Vius
2010-01-04 12:57
2010.03.21
Написание гаджета для Win7





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский