python3在windows上CGI的编程配置

Python CGI编程


什么是CGI
CGI 目前由NCSA维护,NCSA定义CGI如下:
CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口。


网页浏览
为了更好的了解CGI是如何工作的,我们可以从在网页上点击一个链接或URL的流程:
● 1、使用你的浏览器访问URL并连接到HTTP web 服务器。
● 2、Web服务器接收到请求信息后会解析URL,并查找访问的文件在服务器上是否存在,如果存在返回文件的内容,否则返回错误信息。
● 3、浏览器从服务器上接收信息,并显示接收的文件或者错误信息。
CGI程序可以是Python脚本,PERL脚本,SHELL脚本,C或者C++程序等。


image.png

在进行CGI编程前,确保您的Web服务器支持CGI及已经配置了CGI的处理程序。
Apache 支持CGI 配置:打开Apache配置文件 httpd.conf
设置好CGI目录:

1.ScriptAlias /cgi-bin/ /var/www/cgi/   

/var/www/cgi-bin/ 路径更换为 "E:/phpStudy/www/cgi/" 自己指定python代码存放的根目录
在 AddHandler 中添加 .py 后缀,这样我们就可以访问 .py 结尾的 python 脚本文件:

2.AddHandler cgi-script .cgi .pl .py
3.<Directory "E:/phpStudy/www/cgi">
     AllowOverride None
     Options +ExecCGI
     Order allow,deny
     Allow from all
</Directory>

经过以上配置之后,将编写的python脚本文件,放到www目录下的cgi中
在python文件中第一行配置python.exe路径:

#!C:/software/python37/python.exe

还有最重要的一点,在所有输出之前,先输出一个头

print ("Content-type:text/html\n\n")
print ('<h1>我的第一个cgi程序</h1>')

记住:在程序输出之前一定要有换行,告诉服务器结束头部 如果没有换行


image.png

这个时候也许你会遇到乱码问题

import codecs, sys
sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)

头部加上以上两行代码 避免乱码


image.png

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 123,169评论 18 134
  • 前言 Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打...
    依依玖玥阅读 3,226评论 6 37
  • 0 系列目录# WEB请求处理 WEB请求处理一:浏览器请求发起处理 WEB请求处理二:Nginx请求反向代理 本...
    七寸知架构阅读 12,281评论 22 191
  • 什么是 CGI? 公共网关接口(CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的...
    希希爸爸阅读 364评论 0 1
  • 查阅Tomcat$CATALINA_BASE/conf/web.xml文件,很容易发现有个被注释的配置项,即:Co...
    CoderShangfeng阅读 866评论 3 2
  • 最近不知道怎么回事,先后两位朋友,都是她们自己单位的中层干部,在聊天的时候给我抱怨自己单位领导的种种奇葩,看着他们...
    药山阅读 671评论 1 50
  • 六月即将结束,梅雨季节如期而至。时而淅淅沥沥,时而大雨倾盆,天气闷热,出行不便,令人难以忍受。因为工作原因,一大早...
    王者之剑_e528阅读 260评论 0 0
  • 提起树,我们本能的反应是树叶,然后是绿色。很少有人想到冬天的树,不知道从什么时候,开始觉得冬天的树真美,美的别有一...
    好梦不遥远阅读 407评论 6 10