CGI原理

来源:互联网 发布:办公楼网络布线图 编辑:程序博客网 时间:2024/05/19 22:49

CGI简介

CGI全称是“通用网关接口”(Common Gateway Interface),它可以让一个客户端,从网页浏览器向执行在Web服务器上的程序请求数据。CGI描述了客户端和这个程序之间传输数据的一种标准。CGI的一个目的是要独立于任何语言的,所以CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。

CGI运行原理

  1. 客户端访问某个 URL 地址之后,通过 GET/POST/PUT 等方式提交数据,并通过 HTTP 协议向 Web 服务器发出请求。
  2. 服务器端的 HTTP Daemon(守护进程)启动一个子进程。然后在子进程中,将 HTTP 请求里描述的信息通过标准输入 stdin 和环境变量传递给 URL 指定的 CGI 程序,并启动此应用程序进行处理,处理结果通过标准输出 stdout 返回给 HTTP Daemon 子进程。
  3. 再由 HTTP Daemon 子进程通过 HTTP 协议返回给客户端。
  4. 上面的这段话理解可能还是比较抽象,下面我们就通过一次 GET 请求为例进行详细说明。
  5. 如图所示,本次请求的流程如下:

    1. 客户端访问 http://127.0.0.1:9003/cgi-bin/user?id=1
    2. 127.0.0.1 上监听 9003 端口的守护进程接受到该请求
    3. 通过解析 HTTP 头信息,得知是 GET 请求,并且请求的是 /cgi-bin/ 目录下的 user 文件。
    4. 将 uri 里的 id=1 通过存入 QUERY_STRING 环境变量。
    5. Web 守护进程 fork 一个子进程,然后在子进程中执行 user 程序,通过环境变量获取到id
    6. 执行完毕之后,将结果通过标准输出返回到子进程。
    7. 子进程将结果返回给客户端。



0 0