- 論壇徽章:
- 11
|
本帖最后由 Ager 于 2013-05-25 04:17 編輯
樓主啊。。。。龍哥在沙發(fā)上都把話說到這個(gè)份兒上了,你還不思考一下啊。。。。
從你在樓頂?shù)牡谝痪湓?font color="red">“如果只是簡(jiǎn)單的get, post,不帶有任何參數(shù)的話,都是可以很好的支持的”,貌似就說明了,你恐怕還不太理解CGI呀。。。。。
粗略地說,是這樣的:
【如果用GET的話:】
WebClient將FORM中的記錄按某種約定“編入”URL —— 所謂約定基本上就是用問號(hào)、&號(hào)、等號(hào)什么的將各條記錄串起來 —— 然后,WebServer收到此Request,就會(huì)將問號(hào)后面的串,賦給環(huán)境變量QUERY_STRING。
如果是用Perl的話,就用$data = $ENV{'QUERY_STRING'}去拿這個(gè)環(huán)境變量。
【如果用POST的話:】
WebServer將收到的Request數(shù)據(jù)(仍是按上述約定編制FORM中的記錄所得到的),放置于一塊Buffer中,并將數(shù)據(jù)的長(zhǎng)度賦給環(huán)境變量CONTENT_LENGTH —— 因?yàn)閃ebServer不保證為數(shù)據(jù)搞個(gè)EOF,再令CGI程序的STDIN指向那塊Buffer。
如果是用Perl的話,就這樣調(diào)用:read(STDIN,$data,$ENV{'CONTENT_LENGTH'})。
不論用GET還是POST,WebServer能為CGI程序(獲得所謂的“參數(shù)”)所做的,到提供“記錄串”就為止了(即要么用環(huán)境變量QUERY_STRING要么用STDIN)—— 在WebServer看來,是不存在什么你提到的“參數(shù)”的。
CGI程序須自己將“記錄串”解開使其中的各條記錄符合自己的邏輯(只是*看起來好像*起到了與CLI的“參數(shù)”類似的效果而已) —— 這是CGI程序自己的事情,WebServer不管的。
以上,僅供參考,呵呵{:3_193:}
|
|