Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Cookie в WinInet


Derk ©   (2007-12-07 16:01:00) 

Здравствуйте!

Столкнулся с такой проблемой: не знаю как передать по http с помощью WinInet информацию о кукисах. Вкратце, я делаю так:

procedure TForm1.Button1Click(Sender: TObject);
var hI, hConnect, hFile:HInternet;
   Header:PChar;
begin
 hI:=InternetOpen('UserAgent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
 hConnect:=InternetConnect(hI, '127.0.0.1', 80, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
 hFile:=HTTPOpenRequest(hConnect, 'GET', '/', HTTP_VERSION, nil, nil, INTERNET_FLAG_RELOAD, 0);

 Header:='MyX-Header: tram-pararam';
 HttpAddRequestHeaders(hFile,Header,Length(Header),HTTP_ADDREQ_FLAG_ADD);
 HTTPSendRequest(hFile, nil, 0, nil, 0);

 InternetCloseHandle(hFile);
 InternetCloseHandle(hConnect);
 InternetCloseHandle(hI);
end;

И все работает отлично. Но стоит заменить Header:='MyX-Header: tram-pararam'; на Header:='Cookie: A=B;'; и этот заголовк не посылается.

Пробовал вместо

HttpAddRequestHeaders(hFile,Header,Length(Header),HTTP_ADDREQ_FLAG_ADD);
HTTPSendRequest(hFile, nil, 0, nil, 0);


поставить

HTTPSendRequest(hFile, Header,Length(Header), nil, 0);

Такая же ерунда, любые заголовки, кроме Cookie проходят нормально.

Если кто знает, в чем дело, подскажите пожалуйста.


MetalFan   (2007-12-10 10:43:00) [1]


> в кэш чтоли?

угу


Derk   (2007-12-10 09:58:00) [2]

Все отлично! Теперь работает. Только меня немного смущает описание этого флага

INTERNET_FLAG_NO_COOKIES

Does not automatically add cookie headers to requests, and does not automatically add returned cookies to the cookie database.

Не добавляет автоматически принятые куки в базу данных - это куда, в кэш чтоли?


Derk   (2007-12-10 09:21:00) [3]

Проверял - поставил себе SmallHttpServer, коннектюсь на 127.0.0.1:80, он мне показывает все заголовки запроса. У Инди нормально видны куки, у WinInet'a нет куков... Сейчас попробую с флагом поэкспериментировать


MetalFan   (2007-12-09 15:01:00) [4]

аа) ну да, если не указан INTERNET_FLAG_NO_COOKIES в HTTPOpenRequest, то WinInet сам с куками работает и твои куки в хидере вычищает.


MetalFan   (2007-12-09 14:41:00) [5]

как проверял? что куки не уходят..


Наверх

Титульная страница Поиск, карта сайта Написать письмо