Ограничение размера файла cookie. Большие печенья
Я использую ISAPI DLL и столкнулся с ситуацией, когда DLL TWebRequest.Cookie вообще не показывает куки, если общий размер куки больше 4096 байт. Есть ли способ обработки больших файлов cookie?
1 ответ
В Delphi нет способа, если вы не реализуете свой собственный уровень ISAPI (то, что делает IntraWeb). Все, что основано на встроенном слое ISAPI (TISAPIRequest/TISAPIResponse), не может его обработать из-за того, как оно извлекает поле cookie из запроса. Этот метод называется TISAPIRequest.GetFieldByName() (модуль Web.Win.IsapiHTTP):
function TISAPIRequest.GetFieldByName(const Name: AnsiString): AnsiString;
var
Buffer: array[0..4095] of AnsiChar;
...
begin
...
end;
Обратите внимание, что буфер Buffer var, который будет получать фактические данные, ограничен 4096 байтами. Вот почему вы можете получить только этот объем данных в вашем cookie. Я не понимаю, как вы можете получать больше данных, если вы не разбили их на несколько файлов cookie. Вы также можете отправлять данные с помощью настраиваемых полей (которые намного проще создавать / манипулировать со стороны браузера), например, "X-Example" -Ваш-данные: abcde" (также ограничено 4096 байтами). Вы можете получить эти данные, используя тот же метод GetFieldByName ().