Оригинальная CGI-спецификация позволяет легко запускать вещи из командной строки и была полностью задумана не как специальный интерфейс только для HTTP, а как нечто, способное обрабатывать FTP и gopher, а также новый верхний уровень. Схемы URL. Я знаю, что я хотел, когда помог мне это указать.
Спецификация, на которую я ссылался, должна дать вам все, что вам нужно, но по большей части это просто набор переменных среды. Если вы видите запрос на:
http://some.server.com/some/path?a=b&c=d
Переменные среды выглядят так:
SERVER_PROTOCOL=http
REQUEST_METHOD=GET
HTTP_HOST=some.server.com
SERVER_PORT=80
PATH_INFO=/some/path
QUERY_INFO=a=b&c=d
Чтобы изменить полярность в Perl, нужно что-то вроде этого:
$ENV{'SERVER_PROTOCOL'} = 'http';
$ENV{'REQUEST_METHOD'} = 'GET';
$ENV{'SERVER_PORT'} = 80;
$ENV{'PATH_INFO'} = '/some/path';
$ENV{'QUERY_INFO'} = 'a=b&c=d';
system("perl your-CGI-script.pl");
Вещи становятся немного более сложными в обработке запросов POST, и есть больше возможных переменных среды, которые могут потребоваться. В худшем случае вы можете перечислить их все с помощью быстрого CGI-скрипта, например:
print "Content-Type: text/plain\r\n\r\n";
foreach (keys(%ENV))
{
print "$_=$ENV{$_}\r\n";
}
Теперь поместите это на веб-сервер вместо вашего CGI-скрипта, и вы увидите всю среду, в которую он передается (и исходную среду, поэтому вам нужно будет сделать несколько оценочных вызовов).