CGI 目前由NCSA维护,NCSA定义CGI如下:
CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口。
CGI程序可以是Python脚本,PERL脚本,SHELL脚本,C或者C++程序等。
所有的HTTP服务器执行CGI程序都保存在一个预先配置的目录。这个目录被称为CGI目录,并按照惯例,它被命名为/www/cgi-bin目录。我们打开本机电脑的命令窗口,创建/www/cgi-bin目录。
我们在www目录下执行一下命令“python -m http.server --cgi 8008”
注意8008端口与本机的其他端口冲突,如冲突,换其他端口执行
执行完成后,去浏览器上面输入如下地址
如果看到一下页面,则表示服务器已经正常了
我们使用Python创建第一个CGI程序,文件名为hello.py,文件位于/www/cgi-bin目录中,内容如下:
print("Content-type: text/html;charset=utf-8");
print () # 空行,告诉服务器结束头部
print ('<html>')
print ('<head>')
print ('<meta charset="utf-8">')
print ('<title>我的第一个 CGI 程序!</title>')
print ('</head>')
print ('<body>')
print ('<h2>我是来自菜鸟教程的第一CGI程序</h2>')
print ('</body>')
print ('</html>')
浏览器输入一下地址 http://localhost:8008/cgi-bin/hello.py 访问
浏览器输入 http://localhost:8008/cgi-bin/hello.py 之后,因为编码集的问题,所以呈现出来的是乱码的 怎么解决呢,我只需要在开头加两行代码,就可以解决这个问题
import codecs,sys
sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)
浏览器再次访问 http://localhost:8008/cgi-bin/hello.py ,完美解决
完整代码如下:
import codecs,sys
sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)
print("Content-type: text/html;charset=utf-8");
print () # 空行,告诉服务器结束头部
print ('<html>')
print ('<head>')
print ('<meta charset="utf-8">')
print ('<title>我的第一个 CGI 程序!</title>')
print ('</head>')
print ('<body>')
print ('<h2>我是来自菜鸟教程的第一CGI程序</h2>')
print ('</body>')
print ('</html>')
codecs:
codecs专门用作编码转换,字符编码codecs模块,常用来读写文件
codecs模块还提供了方便程序员使用的单独函数,以简化对lookup的调用。它们是:
sys.stdout:
原始的 sys.stdout 指向控制台
如果把文件的对象的引用赋给 sys.stdout,那么 print 调用的就是文件对象的 write 方法
Content-type: text/html;charset=utf-8
脚本第三行的输出内容"Content-type:text/html"发送到浏览器并告知浏览器显示的内容类型为"text/html"。
用 print 输出一个空行用于告诉服务器结束头部信息。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。