在网络领域中,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时,提交的参数。服务根据这些参数进行不同的处理。