![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]как проверял? что куки не уходят..