Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Indy не отправляет(принимает) cookies


Автор: Grom 7.1.2008, 03:13
В общем идхттп связан с идкукименеджер

делаю тест - могу авторизоваться на форуме винграда, все с куки номрально, и сохраняются и отправляются.

хочу залогинится на сайт vkontakte.ru - не получается. 

отправляю запрос на авторизацию, сервер отвечает Set-cookies потом делает редерикт
в редерикте куки не передаются серверу.

запрос браузером
Код

POST /login.php HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://vkontakte.ru/index.php
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)
Host: vkontakte.ru
Content-Length: 38
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: remixchk=5

email=мыло&pass=пасс


ответ браузера
Код

HTTP/1.1 302 Found
Server: nginx/0.5.30
Date: Sun, 06 Jan 2008 23:49:25 GMT
Content-Type: text/html; charset=windows-1251
Connection: close
X-Powered-By: PHP/5.2.0-8+etch7
Pragma: no-cache
Cache-control: private, must-revalidate
Set-Cookie: remixchk=5; expires=Mon, 05-Jan-2009 23:49:25 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixmid=1667694; expires=Mon, 05-Jan-2009 23:49:25 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixemail=мыло; expires=Mon, 05-Jan-2009 23:49:25 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixpass=5d12569e83b0cf2098de3cbbfe32eb45; expires=Mon, 05-Jan-2009 23:49:25 GMT; path=/; domain=.vkontakte.ru
Location: /id1667691
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 26


запрос инди
Код

POST /login.php HTTP/1.0
Connection: Keep-Alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
Cache-control: no-cache
Host: vkontakte.ru
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Encoding: gzip, deflate
Accept-Language: ru
Referer: http://vkontakte.ru/index.php
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)

email=мыло&pass=пасс


ответ
Код

HTTP/1.1 302 Found
Server: nginx/0.5.30
Date: Sun, 06 Jan 2008 23:50:11 GMT
Content-Type: text/html; charset=windows-1251
Connection: close
X-Powered-By: PHP/5.2.0-8+etch7
Pragma: no-cache
Cache-control: private, must-revalidate
Set-Cookie: remixchk=5; expires=Mon, 05-Jan-2009 23:50:11 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixchk=5; expires=Mon, 05-Jan-2009 23:50:11 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixmid=1667694; expires=Mon, 05-Jan-2009 23:50:11 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixemail=K_I_R_I_L_L_%40list.ru; expires=Mon, 05-Jan-2009 23:50:11 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixpass=5d12569e83b0cf2098de3cbbfe22eb45; expires=Mon, 05-Jan-2009 23:50:11 GMT; path=/; domain=.vkontakte.ru
Location: /id1667691
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 26


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

В чем проблема ? Как проверить - приняли инди вообще куки или нет ?

Думаю может проблема в том что инди посылают HTTP/1.0 (хотя в ProtocolVersion у меня стоит pv1_1), а ответ приходит HTTP/1.1 ?

Автор: Grom 9.1.2008, 19:35
неужели никто не знает ?

Автор: Damp1L 10.1.2008, 05:10
КукиМанагер сам не применяет куки, а тока складывает их. Тебе нужно их приложить к запросу, но для начала я их делаю в норм вид, и потом уже добавляю к хейдерам
Код

AnsiString RotateCookie()
{
AnsiString plyushki="Cookie: ";
int r=0;
while (r!=Form1->IdCookieManager1->CookieCollection->Count)
{
plyushki+=Form1->IdCookieManager1->CookieCollection->Items[r]->CookieName+"="+Form1->IdCookieManager1->CookieCollection->Items[r]->Value+"; ";
r++;
}
return plyushki;
}

.....
IdHTTP1->Request->CustomHeaders->Text=RotateCookie();

У меня так пашет.

Автор: ksili 11.1.2008, 05:56
Damp1L, а у меня всё работает без таких прибамбасов - по-умолчанию. Никаких функций обработки и складывания куки не писал - только кукименеджер и все

Автор: Grom 11.1.2008, 21:13
ksili, именно на сайте vkontakte.ru ? попробуй именно на нем

Автор: Grom 11.1.2008, 21:59
Damp1L, не помогло. в куки менеджер ниче не записывается, хотя снифер показывает что куки идут

Автор: Damp1L 12.1.2008, 12:54
А что снифер показывает на ответ ? Кста, они включены вообще ? Idhttp->AllowCookies=true ?

Автор: ksili 14.1.2008, 07:47
Цитата(Grom @  12.1.2008,  01:13 Найти цитируемый пост)
ksili, именно на сайте vkontakte.ru ? попробуй именно на нем

У меня там нет логина/аккаунта/страницы/или_как_там_оно_называется

Автор: Grom 14.1.2008, 20:22
Damp1L, включены. что отвечает - в первом посте написал. попробуй у себя если не сложно.

Автор: cscreator 1.11.2009, 23:35
Проблема из-за "кривых" кукисов...

Решил  данным образом, заменив сохранения в куки-мэнеджер:
Код


      for i := 0 to Cookies.Count - 1 do
       begin
        x:=pos('; domain',Cookies[i]);   // Fixed By Creator :)
        if x>0 then Cookies[i]:=copy(Cookies[i],1,x-1);
        CookieManager.AddCookie(Cookies[i], FURI.Host);
       end;

      for i := 0 to Cookies2.Count - 1 do
        CookieManager.AddCookie2(Cookies2[i], FURI.Host);


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)