• Derk (07.12.07 16:01) [0]
    Здравствуйте!

    Столкнулся с такой проблемой: не знаю как передать по 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 © (09.12.07 14:41) [1]
    как проверял? что куки не уходят..
  • MetalFan © (09.12.07 15:01) [2]
    аа) ну да, если не указан INTERNET_FLAG_NO_COOKIES в HTTPOpenRequest, то WinInet сам с куками работает и твои куки в хидере вычищает.
  • Derk (10.12.07 09:21) [3]
    Проверял - поставил себе SmallHttpServer, коннектюсь на 127.0.0.1:80, он мне показывает все заголовки запроса. У Инди нормально видны куки, у WinInet'a нет куков... Сейчас попробую с флагом поэкспериментировать
  • Derk (10.12.07 09:58) [4]
    Все отлично! Теперь работает. Только меня немного смущает описание этого флага

    INTERNET_FLAG_NO_COOKIES

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

    Не добавляет автоматически принятые куки в базу данных - это куда, в кэш чтоли?
  • MetalFan © (10.12.07 10:43) [5]

    > в кэш чтоли?

    угу
Есть новые Нет новых   [134431   +10][b:0][p:0.001]