CGI通用网关中,通常服务器通过CGI协议来执行可执行程序,并通过环境变量传递一些请求参数进来,通过写一段C的代码并通过浏览器向服务器请求,代码如下:
extern char** environ;
int main() {
int index = 0;
while(environ[index] != NULL) {
printf("%s\n", environ[index++]);
}
return 0;
}
请求地址:http://localhost:801/test_env.cgi/123/123
输出如下:
CONTENT_LENGTH=0
QUERY_STRING=
REQUEST_URI=/test_env.cgi/123/123
REDIRECT_STATUS=200
SCRIPT_NAME=/test_env.cgi
PATH_INFO=/123/123
PATH_TRANSLATED=/var/www/123/123
SCRIPT_FILENAME=/var/www/test_env.cgi
DOCUMENT_ROOT=/var/www
REQUEST_METHOD=GET
SERVER_PROTOCOL=HTTP/1.1
SERVER_SOFTWARE=lighttpd/1.4.45
GATEWAY_INTERFACE=CGI/1.1
SERVER_PORT=801
SERVER_ADDR=127.0.0.1
SERVER_NAME=localhost
REMOTE_ADDR=127.0.0.1
REMOTE_PORT=55394
HTTP_HOST=localhost:801
HTTP_CONNECTION=keep-alive
HTTP_UPGRADE_INSECURE_REQUESTS=1
HTTP_USER_AGENT=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
HTTP_ACCEPT_ENCODING=gzip, deflate, sdch, br
HTTP_ACCEPT_LANGUAGE=zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4