1. 1Copyright ? 2009, Cameo Communications, Inc. All rights reserved. 2009/09/03
Web Server & CGI
Speaker: Lingling Wang
2. 222Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server & CGI
? Web Server
? Web Server 介绍
? Web Server 环境配置
? Web Server 工作原理
3. 333Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server 介绍
? Web Server
? 网页服务器
? WWW(WORLD WIDE WEB) 服务器
? 主要功能
? 提供网上信息浏览服务
? 提供 Web 文件的存放空间;
? 传送和管理 Web 文件;
? 支持各种 Web 程式;
4. 444Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server 环境配置
?主流 Web 服务器软件
? Apache
? 开源,免费
? Linux, Unix, Windows…
? 安装复杂
? 稳定 , 安全
? ……
? IIS (Internet Information Service)
? Windows OS 绑定的组件
? 安装简单
? IIS6.0 较稳定,安全
? ……
Note : Web 服务器软件的选择主要参考服务器端的操作系统及当前应用等。
5. 555Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server 环境配置
? Note: 安装完成后,在系统盘下会产生一个 Inetpub 的目
录 , 这是 IIS 的主目录。
? Inetpub
? wwwroot - web 站点的默认主目录;
? scripts - IIS 会创建一个虚拟目录 SCIPTS 指向该目录,并且给这个
目录执行权限。此目录存在安全隐患。
? AdminScripts -存放 IIS 的 Web 方式管理脚本文件;
? iissamples - IIS 帮助和实例文件存放目录;
? mailroot - smtp 服务主目录;
? ftproot - ftp 站点的默认主目录;
Web Server Installation.pdf
http://172.22.102.123
6. 666Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server 环境配置
? 虚拟目录
? 从主目录以外的其他目录中进行发布,必须创建虚拟目录。
? 虚拟目录不包含在主目录中,但在显示给客户端浏览器时就象
位于主目录中一样。
?? 虚拟目录有一个“别名”,供 Web 浏览器访问此目录时使用。由
于别名通常要比目录的路径名短,因此便于用户输入。使用别名
更加安全,因为用户不知道文件在服务器上的实际位置,所以无
法使用此信息修改文件。使用别名可以更方便地在站点中移动目
录,原因在于不需要更改目录的 URL ,只需更改别名与目录实
际位置之间的映射即可。
7. 777Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server 工作原理
? 浏览器将 URL 分解为三个部分
? 协议(“ http” )
? 服务器名(“ 172.22.102.123” )
? 文件名(“ chunhua.html” )
? 工作原理图
http://172.22.102.123/chunhua.html
8. 888Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server 工作原理
?工作原理步骤
? Step1: Web 浏览器根据客户提供的 URL 链接相关的 Web 服务器
;
? Step2: 如果能和 Web 服务器链接上,浏览器将把整个 URL 传送
给 Web 服务器;
? Step3: Web 服务器根据 URL 所提供的路径查询 Web 浏览器所需
要的资源,并将该资源传送给 Web 浏览器;
? Step4: Web 服务器中断和浏览器的链接
? Step5: Web 浏览器显示 Web 服务器传回的 Web 页面
9. 999Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server & CGI
? CGI
? CGI 介绍
? CGI 环境配置
? Server - CGI 工作原理
? CGI 预备知识
? CGI 编程
? CGI 安全问题
10. 101010Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 介绍
?CGI(Common Gateway Interface)
? CGI (通用网关接口),即 Web 服务器主机提供信息服务的标
准接口,通过该接口, Web 服务器能够执行应用程式并将它们
的输出,如文字、图形、声音等传送给一个 Web 浏览器。一般
来说, CGI 标准接口的功能就是在 HTML 文档与服务器应用程
式之间传递信息。
? CGI 标准接口主要解决以下几个问题:
? Web 服务器和 CGI 程式之间如何传递信息?
? Web 服务器向 CGI 程式传送什么信息?
? Web 服务器向 CGI 程式传送信息的格式是什么?
? CGI 程式向 Web 服务器返回什么信息?
? CGI 程式向 Web 服务器返回信息的格式是什么?
16. 161616Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 预备知识- STDIN/STDOUT
? Web 服务器-客户端和 CGI 程式间的中介
? Web 服务器将 Web 浏览器传送来的信息放在它的标准输出和环境变量中;
? CGI 程式从它的标准输入 ( 即 Web 服务器的环境变量和标准输出 ) 获取信息
, 并将最终输出结果写向它的标准输出 ( 即 Web 服务器的标准输入 ) ;
? Web 服务器从它的标准输入(即 CGI 程式的标准输出)获取 CGI 程序的输
出结果并将它传送给 Web 浏览器。
17. 171717Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 预备知识- GET/POST
? GET
? 客户机把表单中的信息附加到由 action 属性标记命名的 URL 的末尾,
用一个问号把经过 URL 编码后的信息与 URL 名字分开;
? 受到 URL 长度的限制,只能传递大约 1024 字节,且内容在 URL 中显
示;
? 要传输的信息由 http 头部传输的;
? 缺省方法;
? POST
? 要传输的信息作为 http 请求的内容,传输的数据量大,可以达到 2M ;
? 传输的信息不在 URL 中显示出来;
Note: 顾名思义 , Post 主要为了将数据传送到服务器端 ; Get 主要从
服务
器端取得数据。
18. 181818Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 预备知识- URL 编码 / 解码
? U RL 编码-浏览器打包表单输入的格式
? 浏览器从表单获取所有的 name 和其值 ,将它们以 name/value 参
数编码作发给服务器;
? 每对 name/value 由 & 符分开; name/value 由 = 符分开。如果
用户没有输入值给这个 name , name 及 = 符出现,无值;
? 空格用‘ +’ 代替;
? 保留的控制字符、具有特殊意义的字符用 % 接相应的十六进制
ASCII 码代替。
? U RL 解码-编码逆过程
? Html 表单变量与其相应值的分离
? 特殊字符替换
http://172.22.102.123/html/userRegistration_1.html
19. 191919Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 预备知识-环境变量
? Request-Specific 环境变量
? CONTENT_TYPE -所传送来的信息的 MIME 类型
? 一般是 application/x-www-form-urlencoded, 表示数据来自于 HTML 表单。
? REQUEST_METHOD -服务器与 CGI 程序之间的信息传输方式
? POST/ GET
? CONTENT_LENGTH - 从 STDIN 中可以读到的有效数据的字节数
? POST 传输方式
? QUERY_STRING - 传送的信息
? GET 传输方式
? REMOTE_ADDR - 发送请求的客户机的 IP 地址
? REMOTE_HOST -发送请求的客户机的主机名
? …