2012-03-18 66 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> 

當我連接到我的服務器我連接到:本地主機:端口,給我的索引文件,當我打提交按鈕我得到鏈接到本地​​主機:PORT/test.cgi

在我看來這應該直接聯繫我我的CGI文件,一切都應該工作。我知道這一定是因爲我不明白服務器如何組織我的計算機上的文件。有人可以向我解釋這是如何工作的嗎?

如果我沒有發佈一些重要信息,請讓我知道,我會盡快編輯帖子。

+0

我懷疑你沒有寫一個「http服務器」,而只是一個CGI腳本,是嗎? – 2012-03-18 20:30:50

+1

那麼,如果您編寫服務器,那麼您的工作就是儘可能多地進行調試,並告訴我們哪些代碼不像預期那樣工作。如果你沒有寫出來,那麼你就會在你的帖子中留下很多重要的信息。 – 2012-03-18 20:31:58

+0

@BrianRoach我實際上正在編寫一個http服務器以及一個cgi腳本。 – 2012-03-18 20:33:52

回答

1

既然你正在寫的HTTP服務器,你可以定義CGI處理的「規則」 :-)

Apache的,例如,在默認情況下需要一個放置CGI腳本在cgi-bin目錄,以使他們的執行。這一切都可以通過httpd.conf來配置 - 因此用戶可以通過配置文件禁用CGI或爲CGI腳本指定另一個目錄 - 您可以選擇做類似的事情。

另請注意,CGI文件的文件擴展名通常是test.pl(perl腳本)和服務器通常不會指定的腳本文件

http://httpd.apache.org/docs/2.0/howto/cgi.html的叉/ EXEC是一個很好的參考

+0

好吧,聽起來好像我必須爲我的服務器上的CGI處理定義所有'規則'。我也明白perl或python腳本對於CGI文件會更容易,但是分配明確地希望在c中完成所有事情,這使得一切都變得更加複雜了 – 2012-03-18 20:39:00

+0

您的Web服務器將在C中,但它通常會執行perl進程或其他可以理解服務器期望用戶編寫CGI腳本的腳本語言的其他進程 - 作爲Web服務器,您的C代碼僅負責執行cgi腳本並管理其輸出,生命週期 - 腳本本身就是Web服務器的黑盒子 – 2012-03-18 21:47:23