CGI(Common Gateway Interface,通用网关接口)详细说明以及案例
CGI(Common Gateway Interface,通用网关接口)是一种标准协议,用于在Web服务器和外部程序之间传递数据。它允许Web服务器执行外部程序并将输出返回给客户端浏览器。
工作原理
请求接收:Web服务器接收到客户端的HTTP请求。
请求解析:服务器解析请求,确定需要执行的CGI程序。
程序执行:服务器启动CGI程序,并将请求数据(如查询字符串、表单数据)传递给程序。
数据处理:CGI程序处理数据并生成响应内容。
响应返回:CGI程序将生成的响应内容返回给服务器,服务器再将内容发送给客户端。
环境变量
CGI程序通过环境变量获取请求信息,常见的环境变量包括:
REQUEST_METHOD
:HTTP请求方法(如GET、POST)。QUERY_STRING
:URL中的查询字符串。CONTENT_LENGTH
:POST请求中数据的长度。CONTENT_TYPE
:POST请求中数据的MIME类型。
输入输出
输入:CGI程序通过标准输入(stdin)读取POST请求的数据。
输出:CGI程序通过标准输出(stdout)返回响应内容,通常包括HTTP头和响应体。
案例
以下是一个简单的CGI脚本示例,使用Python编写,返回当前时间:
#!/usr/bin/env python3 import datetime print("Content-Type: text/html") # HTTP头 print() # 空行分隔头和体 print("<html>") print("<head><title>Current Time</title></head>") print("<body>") print("<h1>Current Time:</h1>") print("<p>", datetime.datetime.now(), "</p>") print("</body>") print("</html>")
配置
将脚本保存为
time.cgi
。将脚本放置在Web服务器的CGI目录(如
/usr/lib/cgi-bin
)。设置脚本权限为可执行(
chmod +x time.cgi
)。通过浏览器访问
http://yourserver/cgi-bin/time.cgi
,即可看到当前时间。
优缺点
优点:简单易用,支持多种编程语言。
缺点:每次请求都会启动新的进程,性能较低,不适合高并发场景。
CGI已被更高效的技术(如FastCGI、WSGI)取代,但在某些简单场景中仍有用武之地。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。