CGI

CGI(Common Gateway Interface),通用网关接口,HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。

CGI在其中扮演的是在web服务器和特定语言解释器之间输入输出的协议的角色, 每个来自用户的请求, web服务器都会唤起特定语言解释器的命令行(例如Python), CGI 会作为一种约定来将web服务器获得的请求数据(如url,post data)等,有选择地 作为命令行参数来输入到解释器的命令行中(标准输入), 解释器根据输入 构造出特定的html作为标准输出, 此时 CGI 又会对输出作额外的处理,如加入特定的 header(mimetype,cookie等)返回给web服务器,继而返回给用户(web服务器可能会作额外的处理).

CGI工作流程:

  • 1、使用你的浏览器访问URL并连接到HTTP web 服务器。
  • 2、Web服务器接收到请求信息后会解析URL,并查找访问的文件在服务器上是否存在,如果存在返回文件的内容,否则返回错误信息。
  • 3、浏览器从服务器上接收信息,并显示接收的文件或者错误信息。

CGI程序可以是Python脚本,PERL脚本,SHELL脚本,C或者C++程序等。

CGI的缺点

CGI 作为一种标准协议后,各种主流的web服务器都支持,如 apache, IIS 等, 那么从上面的处理流程中我们会发现其中的几个主要缺点:

  1. 对于每个请求,都需要新创建一个解释器的进程,而进程的创建通常都是比较昂贵的(expensive)
  2. 而且,对于脚本语言,解释器还需要一定的时间来解释生成对应的html
  3. 更大机率的 code injection , 因为在cgi脚本中都是手动地处理html所以更容易引起代码注入(当然更多地取决于程序员本身)

Appche服务器配置cgi

1.服务器执行CGI程序(python脚本)都保存在一个预先配置的目录。这个目录被称为CGI目录,并按照惯例,它被命名为/var/www/cgi-bin目录。

2.在httpd.conf文件AddHandler中添加.py

AddHandler cgi-script .cgi .pl .py

第一个CGI程序

接受浏览器get、post请求,然后cgi用python脚本解释处理。

#!/usr/bin/python3# CGI处理模块
import cgi, cgitb # 创建 FieldStorage 的实例化
form = cgi.FieldStorage() # 获取数据
site_name = form.getvalue('name')
site_url  = form.getvalue('url')print ("Content-type:text/html")
print ()
print ("<html>")
print ("<head>")
print ("<meta charset=\"utf-8\">")
print ("<title>菜鸟教程 CGI 测试实例</title>")
print ("</head>")
print ("<body>")
print ("<h2>%s官网:%s</h2>" % (site_name, site_url))
print ("</body>")
print ("</html>")

  

  

转载于:https://www.cnblogs.com/gala1021/p/7843317.html

python入门(七):CGI编程相关推荐

  1. python cgi库_《Python 数据库 GUI CGI编程》

    1. 上次写在前面,我们介绍了一篇关于开始使用Python.今天我们将介绍Python数据库,GUI, CGI编程和Python和Python的区别.2.连接到数据库标准Python数据库接口是Pyt ...

  2. 编程小白的第一本python入门书-《编程小白的第一本Python入门书》读书笔记

    对于编程零基础初学者来讲,Python入门选择看什么样的书是很重要的.第一本Python入门书的内容要精简,不然新手学了很久,都还在死磕基础知识.书的难度也不能太高,不然缺乏基础的学习者会看不懂,从而 ...

  3. 儿童编程python入门_儿童编程python入门

    经常会有小朋友问我,"我想做个黑客,我该学什么编程语言?",或者有的小朋友会说:"我要学c,我要做病毒".其实对于这些小朋友而言他们基本都没有接触过编程语言,只 ...

  4. Python入门七:安装支持WinXp运行的Python及环境配置

    之前安装的Python开发的程序无法在WinXp上运行,这里记录下安装支持Xp系统的Python及环境配置 之前程序在Xp上运行的错误: 无法定位程序输入点 GetFinalPathNameByHan ...

  5. Python入门 —— 03GUI界面编程

    GUI(Graphical User Interface) 即图形用户接口,又称图形用户接口. 是指采用图形方式显示的计算机操作用户界面.GUI 是屏幕产品的视觉体验和互动操作部分. "你的 ...

  6. python 舍去小数_零基础小白Python入门必看——编程基础概念

    1. 程序的构成 程序由模块组成,一个模块对应python的源文件 ,一般后缀为:.py 模块由语句构成 语句是python程序的构造单元,用于创建对象.变量赋值.调用函数.控制语句等. 2. 对象 ...

  7. python面向对象编程的优点-Python入门之面向对象编程(一)面向对象概念及优点

    概念 谈到面向对象,很多程序员会抛出三个词:封装.继承和多态:或者说抽象.一切都是对象之类的话,然而这会让初学者更加疑惑.下面我想通过一个小例子来说明一下 面向对象一般是和面向过程做对比的,下面是一个 ...

  8. Apache+Python+Windows进行CGI编程新手上路时的各种坑

    题外提醒: 1.本人有强迫症,且死要面子.所以不到完全迫不得已,不会"骚扰"身边的大佬,这让我在这破事上浪费了三四天,虽然最终对其理解更为深刻,但投入和产出严重不成比例,希望大家不 ...

  9. python入门之网络编程Scoket

    1.网络编程基础: Sockets(套接字)可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器. Socket主要是使用IP地址,协议,端 ...

  10. python入门(七)

    python数据结构 一.数据结构概述 数据组织在一起的结构叫做数据结构. python中的数据结构:列表,元组,字典,队列,栈,树等等. python内置数据结构:列表.元组等. python扩展数 ...

最新文章

  1. SharePoint 2010开发实例精选——“每日一句”WebPart
  2. css学习笔记2--多重边框
  3. fetch 自动加cookie_WEBUI自动化开发(第五章)
  4. 如何取消计算机用户名,Win10如何取消登录界面显示用户名?
  5. 内网ip 设置_我的天,大牛黑客轻而易举打穿三层内网,吃惊
  6. Spring No mapping found for HTTP request with URI错误
  7. jquery width,height,innerwidth,innerheight,outerwidth,outerheight方法
  8. js导出excels表格.XLSX
  9. PowerVR SGX
  10. 腾讯研究院发布《2021数字科技前沿应用趋势》
  11. 大数据解决方案-最新全套文件
  12. 翌加:抖音小店可以绑定几个抖音号
  13. linux生成秘钥库,在Linux中,生成强预共享密钥(PSK )的4种方法
  14. LeetCode每日一题——952. 按公因数计算最大组件大小
  15. 兼容IE的excel下载
  16. 信息学奥赛一本通C++语言——1058:求一元二次方程
  17. 使用axis发送xml报文,返回并解析报文实例
  18. css 实现蒙版效果
  19. 步进电机控制与LCD显示L297与L298
  20. 六步设置CAD经典模式——告别繁琐的设置,直接导入文件

热门文章

  1. 第七章部分例题最大乘积
  2. java多条件不定条件查询
  3. ACM将一个十进制的数转换为一个十六进制的数输出
  4. JQuery和JavaScript常用方法的一些区别
  5. [导入]将asp.net usercontrol(用户控件页)转变为普通控件
  6. 根据自己平时的经验写的针对SQLSERVER操作的通用类库
  7. 实现两边定宽,中间自适应布局(三栏布局)的七种方法
  8. java 绘图 渐变_在CAShapeLayer图形下方绘制渐变
  9. python获取图片某像素点位置_如何在python中获取图像中指定区域内的所有像素坐标?...
  10. SpringBoot常用注解以及作用