2012-03-18 2 views
1

У меня есть домашнее задание, которое я должен написать http-сервер, который должен обрабатывать ввод, указанный в форме на моей странице index.html. Для этого у меня есть форма, использующая действие POST и ссылки на файл cgi. Проблема, с которой я сталкиваюсь, связана с моим файлом cgi. Мой индексный файл и файл CGI находится в той же папке, так что моя форма выглядит примерно так:Обработка HTTP-сервера и CGI

<form action="test.cgi" method="POST"> 
    Username: <input type="text" name="user" /> 
    <input type="submit" value="Submit" /> 
    </form> 

При подключении к серверу я подключиться к: LOCALHOST: порт, который дает мне индексный файл, и когда я попал кнопку отправки я связываюсь с localhost: PORT/test.cgi

На мой взгляд, это должно напрямую связывать меня с моим файлом cgi, и все должно работать. Я знаю, что это должно быть потому, что я не понимаю, как сервер организует файлы на моем компьютере. Может ли кто-нибудь объяснить мне, как это работает?

Если бы я не опубликовал некоторую важную информацию, просто сообщите мне, и я отредактирую сообщение как можно скорее.

+0

I подозреваете, что вы не пишете «http-сервер», а просто скрипт cgi, да? –

+1

Ну, если вы написали сервер, ваша работа - отлаживать его как можно больше, и сообщить нам, какой код работает не так, как ожидалось. Если вы его не пишете, вы оставите много важной информации из своего сообщения. –

+0

@BrianRoach Я на самом деле пишу http-сервер, а также скрипт cgi. –

ответ

1

Поскольку вы пишете сервер HTTP, вы можете определить «правила» обработки CGI :-)

Apache, например, по умолчанию требует, чтобы поместить CGI скрипты в CGI-BIN каталога, чтобы включить их выполнение. Все это настраивается с помощью httpd.conf - поэтому пользователь может отключить CGI или указать другой каталог сценариев CGI через конфигурационный файл - вы можете сделать что-то подобное.

Также обратите внимание, что расширения файлов для CGI-файлов, как правило, test.pl (для PERL скриптов) и сервер обычно делает вилка/Exec из указанного файла сценария

http://httpd.apache.org/docs/2.0/howto/cgi.html является хорошим справочным

+0

Хорошо, мне кажется, что я должен определить все «правила» обработки CGI на моем сервере. Также я понимаю, что скрипты perl или python будут проще для файлов CGI, но назначение специально требует, чтобы все было сделано в c, что делает все немного сложнее –

+0

ваш веб-сервер будет находиться на C, но обычно он будет выполнять perl процесс или какой-либо другой процесс, который может понять язык сценария, на котором ваш сервер ожидает, что пользователи будут писать сценарии CGI в качестве веб-сервера, ваш код C отвечает только за выполнение скрипта cgi и управление его выходом, жизненный цикл - скрипт сам является черным ящиком для веб-сервера –