《Perl编程24学时教程》笔记第20课 perl HTTP和CGI操作

发布时间:2019-09-12编辑:脚本学堂
本文分享《Perl编程24学时教程》笔记第20课时的内容,介绍下perl操作HTTP与CGI的相关知识,有需要的朋友参考下。

第20课时  对HTTP和CGI进行操作

一、HTTP通信概述
浏览器与Web服务器连接时,浏览器向服务器发送一条初始消息。
 

GET http://testserver/ HTTP/1.0   接受的URL和协议的版本
Connection: Keep-Alive    连接保持打开状态
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* 接受数据的类型
Accept-Charset: iso-8859-1, *, utf-8  接收数据的编码
Accept-Encoding: gzip    接收压缩数据
Accept-Language: en, en-GB, de, fr, ja, ko, zh 接收的语言
Host: testserver:80    访问的服务器和端口
User-Agent: MCZILLA/4.51 [en]C-c32f404p {WinNT; U} 浏览器的身份

服务器发送一个应答消息。
 

GET http://testserver/ --> 200 OK  服务器状态,200表示正常
Date: 时间     时间
Server: Netscapte-Enterprise/3.5.1G  服务器的身份
Content-Length: 222    发送给浏览器的字节数
Content-Type: text/html    发送给浏览器的数据种类
Last-Modified: 时间    上次修改的时间

1,人工检索Web页
telnet server_name port_NO
连接之后可能看不到提示符和连接消息,这是正常的
键入如下内容:GET http://server_name/ HTTP/1.0,然后按两次Enter。

2,返回非文本信息
CGI模块使用header函数设置MIME内容类型(Content-Type),默认text/html。
设置其他内容类型,使用-type选项。
常用的MIME内容类型是text/plain(不需转换的文本),image/gif(GIF图形),image/jpeg(JPEG图形),application/appname(应用程序appname特点的数据)和application/octet-steam(原始二进制数据)。

二、调用CGI程序的详细说明
启动CGI程序:通过链接调用CGI程序的URL或直接键入URL,把CGI程序做为HTML填充窗体的目标程序。

1,给CGI程序传递参数
包含参数的URL:?指明其后为参数,=之前是参数名,之后是参数值,&参数分隔符。

2,特殊参数
在URL中?,&,',"和空格都是特殊字符,需要进行转义。
对字符转义是把字符的ASCII值转换成一个两位数十六进制数字,并在他的前面加一个百分号。
CGI模块中escape函数可创建转义字符串,但需要显示要求使用该函数,即use CGI qw(:all escape);。

三、服务器端的包含程序(SSI)
正确地运行SSI,要使用shtml或stm的HTML扩展名。
<!--#echo var="LAST_MODIFIED">替换上次修改的日期。
<!--#exec cgi="/cgi-bin/simple.cgi">执行CGI程序

四、部分环境函数简介
相关文档查看CGI部分。
 

referer  返回发送到该Web页的URL。
user_agent 返回浏览器的种类。
remote_host 返回检索Web页的系统的主机名或IP地址
script_name 返回正在运行该程序的程序名。
server_name 返回托管CGI程序的服务器的名字。
virtual_host 返回用于托管CGI程序的虚拟主机名。

五、重定向
CGI模块中的redirect函数用于实现重定向。
将HTML的<META HTTP-EQUIV="refresh">标记用于重定向,会在重定向之前产生明显的延迟,浏览器要先加载全部web页,javascript存在同样问题。
HTML重定向是在任何HTML之前发生的。