PDA

Просмотр полной версии : Каким образом отправить сразу несколько запросов серверу через сокеты?


beerbear
20.04.2007, 19:23
Ситуация следующая:

Инеткрэком отправляю запрос:


POST http://site.com/login 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://site.com
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: site.com
Content-Length: 47
Pragma: no-cache
Cookie: PHPSESSID=2f83a67a61ef83594528c117c25a7da3

username=usver&password=123456&processlogin=1


Приходит ответ:


HTTP/1.0 302 Found
Date: Tue, 17 Apr 2007 18:23:23 GMT
Server: Apache
X-Powered-By: PHP/5.2.0-8
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: private
Pragma: no-cache
Set-Cookie: PHPSESSID=dbad9cfe26fa3aa839312951e7053c4d; path=/; domain=.site.com
Set-Cookie: loginname=usver; path=/; domain=.site.com
Set-Cookie: id_hash=bca49e192dce15ec725dce475e59d1a0; path=/; domain=.site.com
location: http://site.com/authloggedin
Content-Length: 0
nnCoection: close
Content-Type: text/html; charset=UTF-8
RemovedHdr: Keep-Alive



Как я понимаю из ответа сервак не разрывает со мной соединение и пытается перекинуть на http://site.com/authloggedin. Правильно?

Пытаюсь реализовать то же самое на пхп через сокеты. Цель получить кукисы:

Set-Cookie: PHPSESSID=dbad9cfe26fa3aa839312951e7053c4d; path=/; domain=.site.com
Set-Cookie: loginname=usver; path=/; domain=.site.com
Set-Cookie: id_hash=bca49e192dce15ec725dce475e59d1a0; path=/; domain=.site.com


Если в запросе указать Proxy-Connection: Keep-Alive - скрипт виснет намертво. Если поставить Connection: Close, то сервак присылает куки, но только:


Set-Cookie: loginname=usver; path=/; domain=.site.com
Set-Cookie: id_hash=bca49e192dce15ec725dce475e59d1a0; path=/; domain=.site.com

без ID сессии.

Насколько я понял, чтобы куки нормально установились надо как-то сделать GET запрос на http://site.com/authloggedin , не разрывая соединения..

Внимание, вопрос:
Как сделать этот GET запрос не разрывая соединения и не закрывая сокет? Или сокет можно все-таки закрыть?

Попытался погуглить на эту тему, нашел только какие-то туманные рассуждения по поводу неблокирующих сокетов, но ничего конкретного (не говоря уже про примеры) там не было написано...

Наставьте, плз, на путь истинный! :)

Helios
20.04.2007, 20:54
Если в запросе указать Proxy-Connection: Keep-Alive - скрипт виснет намертво. Если поставить Connection: Close, то сервак присылает куки, но только:

А Connection: Keep-Alive не пробовал?

beerbear
20.04.2007, 21:06
А не пробовал?

да уже по-всякому пробовал.. ноль эмоций

hidden
20.04.2007, 23:43
POST http://site.com/login 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://site.com
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: site.com
Content-Length: 47
Pragma: no-cache
Cookie: PHPSESSID=2f83a67a61ef83594528c117c25a7da3

username=usver&password=123456&processlogin=1
Когда найдёшь, откуда взял это печенье, получишь ответ на свой вопрос.

beerbear
20.04.2007, 23:56
Все. Спасибо. Разобрался.
Просто спать надо больше! =)