在網絡領域中,HTTP應用是最廣的,技術分類也特別細。但我本人沒有從事以HTTP爲基礎的互聯網業務,很是遺憾。
因爲項目的要求,在小設備上做一個WEB配置。
使用的是lighttpd+cgi的方式。下面是我的一個小小的測試過程.
1.測試環境。
服務器:ubuntu+lighttpd+bash+lua
客戶端:firefox + httpRequester
lighttpd上配置*.cgi的文件由lua來處理。*.sh的文件由bash來處理。
cgi.assign = (
".cgi" => "/usr/bin/lua",
".sh" => "/bin/sh",
)
我自己寫了一個my.cgi和my.sh
兩個文件都是把全局變量保存到日誌中,輸出當前時間。
#my.sh
export > my.sh.export
echo "my.sh `date`"
#my.cgi
print("time: " .. os.date());
os.execute("export >my.cgi.export");
2測試過程
在firefox上使用httpRequester來請求(GET方式)WEB服務器上的my.cgi,my.sh
查看my.sh.export,my,cgi.export的內容。
my.sh.export的內容
xport CONTENT_LENGTH='0'
export DOCUMENT_ROOT='/home/abloomy/lua/lighttpd/www//pages/'
export GATEWAY_INTERFACE='CGI/1.1'
export HTTP_ACCEPT='*/*'
export HTTP_ACCEPT_ENCODING='gzip, deflate'
export HTTP_ACCEPT_LANGUAGE='zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3'
export HTTP_CONNECTION='keep-alive'
export HTTP_DNT='1'
export HTTP_FOO='foo'
export HTTP_HOST='172.16.25.33:8088'
export HTTP_USER_AGENT='Mozilla/5.0 (Windows NT 6.1; rv:55.0) Gecko/20100101 Firefox/55.0'
export PWD='/home/abloomy/lua/lighttpd/www/pages'
export QUERY_STRING=''
export REDIRECT_STATUS='200'
export REMOTE_ADDR='172.16.25.218'
export REMOTE_PORT='59513'
export REQUEST_METHOD='GET'
export REQUEST_URI='/my.sh'
export SCRIPT_FILENAME='/home/abloomy/lua/lighttpd/www//pages/my.sh'
export SCRIPT_NAME='/my.sh'
export SERVER_ADDR='172.16.25.33'
export SERVER_NAME='www.aabbcc.com'
export SERVER_PORT='8088'
export SERVER_PROTOCOL='HTTP/1.1'
export SERVER_SOFTWARE='Apache 1.3.29'
export SETENV='setenv'
export TRAC_ENV='tracenv'
my.cgi.export
export CONTENT_LENGTH='0'
export DOCUMENT_ROOT='/home/abloomy/lua/lighttpd/www//pages/'
export GATEWAY_INTERFACE='CGI/1.1'
export HTTP_ACCEPT='*/*'
export HTTP_ACCEPT_ENCODING='gzip, deflate'
export HTTP_ACCEPT_LANGUAGE='zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3'
export HTTP_CONNECTION='keep-alive'
export HTTP_DNT='1'
export HTTP_FOO='foo'
export HTTP_HOST='172.16.25.33:8088'
export HTTP_USER_AGENT='Mozilla/5.0 (Windows NT 6.1; rv:55.0) Gecko/20100101 Firefox/55.0'
export PWD='/home/abloomy/lua/lighttpd/www/pages'
export QUERY_STRING=''
export REDIRECT_STATUS='200'
export REMOTE_ADDR='172.16.25.218'
export REMOTE_PORT='59301'
export REQUEST_METHOD='GET'
export REQUEST_URI='/my.cgi'
export SCRIPT_FILENAME='/home/abloomy/lua/lighttpd/www//pages/my.cgi'
export SCRIPT_NAME='/my.cgi'
export SERVER_ADDR='172.16.25.33'
export SERVER_NAME='www.aabbcc.com'
export SERVER_PORT='8088'
export SERVER_PROTOCOL='HTTP/1.1'
export SERVER_SOFTWARE='Apache 1.3.29'
export SETENV='setenv'
export TRAC_ENV='tracenv'
export QUERY_STRING=''"是我們最關心的。
例如:我們請求的url:http://172.16.25.33:8088/my.sh?name=jett&age=3
export QUERY_STRING='name=jett&age=3'
這就是用戶進行get時,提交的參數。服務根據這些參數進行不同的處理。