Cookies в браузере задаются при помощи META тега в заголовке HTML страницы (http://z-oleg.com/delphi/cookies.htm):
- Код: Выделить всё
<META HTTP-EQUIV="Set-Cookie" CONTENT="name=password; PATH=/">
В соответствии с примером (https://wiki.freepascal.org/CGI_Web_Programming/ru) проверка cookies в CGI-программе производится следующим образом:
- Код: Выделить всё
program cgiproject1;
{$mode objfpc}{$H+}
uses
fpCGI, Unit1, dos;
const
f0: String[13]='name=password';
var
f: String;
i: Integer;
begin
f:=GetEnv('HTTP_COOKIE');
if f='' then
begin
writeln('Error: no cookie');
Halt
end;
i:=pos(f0,f);
if i=0 then
begin
writeln('Error: no password');
Halt
end;
Application.LegacyRouting:=True;
Application.Title:='cgiproject1';
Application.Initialize;
Application.Run;
end.
В результате её выполнения происходит следующая ошибка сервера (500):
Error message:
Premature end of script headers: cgiproject1.cgi
Если же CGI-программа запускается без проверки cookies, то ошибки сервера не происходит:
- Код: Выделить всё
program cgiproject1;
{$mode objfpc}{$H+}
uses
fpCGI, Unit1;
begin
Application.LegacyRouting:=True;
Application.Title:='cgiproject1';
Application.Initialize;
Application.Run;
end.
В чём же заключается причина возникновения ошибки сервера? Буду признателен за любой совет по данной проблеме.