软件测试项目
1. 项 目 是 怎 么进 行 测 试 的
类似题目:给你个项目怎么测?拿到一个项目如何开展测试工作?
思路:考虑面试时间一般一个问题在3 分钟以内,因此在回答这类问题的时候要以覆盖全面的大点
(流程、工具、成绩)为主要思路,顺便留一些“暗示”来引导考官后续的问题。
答:
1)、进销存项目为 B/S 架构,系统测试为主,主要涵盖了功能测试、易用测试和基本的安全测试。
2)、在系统测试过程中,主要的工作为进行测试需求分析,编写测试计划和测试方案,进行用例
的设计、编写和执行,提交缺陷报告并进行回归测试。
3)、在项目中附以多种工具:SVN、QC、HTTPWatch、Allpairs、正交助手、Visio、Xenu
4)、除了基本的测试工作之外,我还着重对数据库部分进行了深入的分析和测试,发现了不少与
之相关的问题,如果后续有时间我可以进行细致的介绍。
2. 你 你 的 项 目 是如 何 部 署 的
思路:不同的项目选择不同的部署环境,注意要能说出每个软件安装的大致步骤和配置方法。
答:
1)、使用 VMware 部署虚拟的测试环境
2)、选择你项目的环境:
ASP 或.net 语言:WinServer2008、IIS、SQL Server
JSP 语言:Windows/Linux、JDK、Tomcat、MySQL/Oracle
WAMP 环境:Windows Server、Apache、MySQL、PHP
LAMP 环境:Linux、Apache、MySQL、PHP
3. 如 如 何 进 行 测试 需 求 分 析
答:
1)、获取尽可能多的相关资料:需求文档、设计文档、源代码、数据库设计文档、说明书、同
类软件、相关国家、行业规范等,多多益善。
2)、整理参考资料,提出当前版本需要进行测试的需求(明确测试需求)。依据项目结构、模块
和质量特性等,将所有需求进行分级整理。
如:进销存项目
| —— 功能特性
| |——入库模块
| | |—— 产品名称(测试需求)
| | |—— 产品货号(测试需求)
| |——出库模块
|—— 安全特性
3)、确定需求的优先级(为了明确测试的重点和执行顺序)
4)、统计需求总量,为编写《测试计划》提供参考数据。
5)、对重要的需求进行相信分析,为用例设计提供依据。
如:产品货号
内容:只能输入数字
范围:1 到 9 位数字组成
约束:非空、唯一
- 针对数据库部分你是如何测试的
答:
1)、针对被测功能构造测试数据,导出并保存以为复用。如查询功能测试。
2)、分析数据库设计,转换成测试用例,
如:根据类型测试边界值,char(10)、int、smallint
如:根据约束设计:非空、唯一、主外键(测试删除时要注意顺序)
如:字段设计是否合理,入库数量字段,一个表设计为整型,一个表设计为双精度类型
3)、结果的验证(正确、错误),如添加商品成功,要到数据库端检查一下是否真实保存成功
4)、安全性测试:是否存在 SQL 注入的漏洞。(进销存登录页面存在)
- 项目中你编写了多少测试用例
思路:公司中对用例个数的统计不尽相同,我们每个用例的规模都偏大。如有些公司对“产品名称”
的测试分为“○
1 正常输入测试”、“○ 2 输入为空”、“○ 3 输入使用最大值”、“○ 4 输入包括特殊符号”、“○ 5
输入超出最大值”等,算为 5 个测试用例,但是我们学习中参考 HP 公司 QC 的理念划分为 1 个测试
用例 5 个测试步骤,好处是方便模板的调用提高工作效率。
答:
1)、在我们项目中,参考 HP 公司 QC 中的用例管理模式,每个测试对象作为一个测试用例,不
同测测试角度作为测试步骤,因而用例数偏少,步骤数偏多,实际测试充分度是相同的。
2)、我主要负责项目核心模块的用例设计和编写工作,先进行设计,再编写测试用例,其中功
能性测试用例大约 100 个,其他非功能性测试用例加起来大约 50 个。
3)、针对不同优先级的需求,用例编写的详细程度也不尽相同,重点的测试对象设计的比较详
细,非重点的测试对象有的只测试正常的功能或者有效值即可。
4)、对于相同或相似的步骤,封装为模板,并进行了参数化设计,减少近 50%的工作量。
5)、用例编写完成后进一步进行了需求跟踪维护和覆盖率分析。
- 在项目中有没有不尽人意的地方
思路:这个题目不是让你对项目发牢骚,提不满,否则你只是参加了一个流程混乱,结果失败的项
目经验,不会给你加分的。该问题主要体现你是盲目的去工作还是有头脑的去工作,是否能够发现
问题,提出见解,进而去解决问题。
答:
1)、项目的整个过程还是条理清晰,控制到位的,只是在某些细节上还可以精益求精,加以适
当的改进。
2)、在计划中主要是以模块进行任务划分的,因此对跨页面、跨模块的功能把握不够细致,以
后可以多加强各模块负责人的沟通和交流,加强业务的交互分析和测试。
3)、应该进一步加强缺陷的分析和整理,实现更多维度的统计分析(如分析缺陷产生的主要原
因,在下一个项目中尽量避免重复生成;在测试中随时定位哪些模块的质量问题较严重,进而加大
测试力度),提高软件质量。
- 项目中你用到了哪些设计方法
思路:面试前每个项目至少找到使用不同方法的 4 个案例,如“产品货号”可以使用等价类、边界
值方法,“登录”可以使用流程分析方法,“查询结果翻页”使用判定表方法。
- 项目中你发现了多少个缺陷
思路:提前准备好项目中的缺陷,按类型准备,如功能性的,安全性的,易用性的等各准备 1 到 2
个。而且最好不要太平常,那种任何人都能找出来的 Bug,如某个对象没有进行非空校验。一定准
备能证明你细心的、技术好的、隐藏深的 Bug。
答:
1)、进销存项目中,“产品名称”在数据库的两个表中都用到,其中一个用 varchar(50),另一
个用 varchar(255),这样当输入名称长度介于 50和 255 之间时,系统报错,而且 255 长度的表中
增加了数据,这样会导致数据不一致,给后续测试带来误差。 (功能——数据库)
2)、进销存项目中,“产品数量”在数据库的两个表中都用到,其中一个用 int 类型,另一个用
双精度,这样当输入数量为小数(如2.9)时,系统没有报错而是提示成功,但是一个表存入的数据
是 3(整型),一个表存入的是 2.9(浮点型),给后续测试带来误差。 (功能——数据库)
3)、进销存项目中,“产品数量”通过 onkeyup 事件限制只能输入数字和小数点,但是可以通过
鼠标点击使失去焦点操作绕过该验证,进而导致程序失效 (功能——前台 JS 校验)
4)、进销存项目中,会员积分在数据库中保存类型为整型,如果输入超出 2 31 -1(整型在 SQL 数
据库中占用 4 个字节)系统报错 (功能——类型越界)
5)、进销存项目中,系统设置页面可以设置查询结果每页显示的记录数,输入 0 提示保存成功,
但是在另外的查询页面保存,因为在计算总页数的时候,使用“总记录数”除以“每页显示的记录
数”,但因为“除数”为 0 导致页面失效。 (功能——交互)
6)、登录页面输入用户名处存在 SQL 注入漏洞(’ or 1=1 or ’=) (安全——SQL 注入)
7)、部分页面存在跨站脚本攻击漏洞(编辑框中输入类似 <input type=”text”>)) (安全——跨站)
8)、前台页面都是通过 JS 做校验的,服务器端没有再次进行校验,因此一旦浏览器端禁用 JS 功
能,所有的校验均失效。 (安全——校验)
9)、查询结果表格中有些数字字段使用了居中对齐方式,应该右对齐 (易用——对齐)
10)、因为程序员笔误,将文件名由“style.css”错写出“Style.css”(首字母大写),导致该 CSS
文件被下载到缓存两次 (Web ——缓存)
- 除了功能测试你还做了哪些测试
思路:这里的测试类型可以参考ISO9126 质量模型,选取不同测试的角度,但是每个类型要准备几
个案例,最好是有 bug 的案例
答:
1)、除了功能还进行了兼容、安全、易用、数据库等方面的测试。
2)、兼容测试:主要考虑客户端浏览器的不同、操作系统的不同。如<input type=”password”>在
IE6 和 IE7 中的“宽度”不一致。另外浏览器市面上种类很多,不能所有都测试到,因此可以通过内
核的不同和市场占有率进行选择。主要可以考虑:IE(Trident 引擎)、Firefox(Gecko 引擎)、Chrome
(Chromium)三大主流内核和市场占用最多的浏览器,象搜狗、360 等浏览器也是使用以上内核。
3)、安全测试:SQL 注入、跨站脚本攻击、数据库对密码是否加密存储、是否可以绕过登录页
面直接通过地址栏访问内部页面,退出后是否可以通过后退进入站点。
4)、易用测试:Tab 键顺序、对齐方式、颜色、字体等样式风格是否统一等,每个页面是否都设
置了标题,导航是否方便,除了界面可以针对 CSS 文件进行检查。
5)、表单测试:表单提交是否成功、Get 方式直接修改地址栏中的数据后提交是否被校验。
6)、超链测试:检查是否有死链,借助工具 Xenu 自动检查所有页面的超链
7)、缓存测试:cookie 中保存数据是否有效,是否泄露敏感数据(如密码),过期时间是否设置
合理,JS 代码是否被精简,是否下载了不必要的缓存文件。
6)、自动化测试:针对哪个部分进行了自动化测试
7)、性能测试:针对哪个部分进行了性能测试
- 正交实验方法的意义和风险
答:
1)、正交实验主要是解决多条件组合的测试问题。如果进行全组合(笛卡尔积)则用例的数量
会非常庞大而无法进行测试。
2)、通过选择标准的正交表,实现任意条件取值的两两充分组合。可以通过正交表手工组合,
也可以使用专门的工具进行,如开源的 Allpairs,微软的 PICT 等软件。
3)、如一个 L9-3-4 的正交表(4 因素,3 水平,9 次实验),如果完全组合需要 3 4 =81 种,而正交
只需要进行 9 种组合即可。
4)、依据经验,如果任意两个值的组合不出问题,那么任意多个值的组合出问题的可能性要小
的多(并不是绝对不会出问题),基于成本和效率的考虑,才选择正交实验方法。
- 登录怎么测
思路:回答时注意不要只局限在功能层面上,安全、易用等方面也要去考虑。在 QC 的 Demo 中提供
了一个现成的登录用例(注册 7 个不同的用户,然后分别调用模板进行测试),可以参考回答。
答:
1)、功能测试。使用等价类方法分别输入有效、无效值进行测试。或者绘制处理流程图,遍历
路经来测试登录功能。
2)、易用测试。Tab 键的切换顺序是否正确(从上到下,从左到右)。当确定错误提示后焦点应
自动定位到出错的控件
3)、可靠测试。禁用客户端脚本(如 JS),检查服务器端是否仍有校验。
4)、安全测试。是否存在 SQL 注入等漏洞。是否通过地址栏可以绕过登录页面直接访问里面的
页面。如果是银行类安全要求高的网站,是否自动启用 https 安全的协议传输数据。
5)、缓存测试。登录页面是否不需要进行缓存。
- 删除怎么测
答:
1)、以使用数据库的系统为例,删除一般可以分为“逻辑删除(假删)”和“物理删除(真删)”,
而物理删除又要考虑是否涉及主外键的约束关系。
2)、逻辑删除。如 QC 自定义管理中,对用户自定义字段进行删除,实际是保留数据库中该字段,
只是对所有记录该字段的内容进行清空操作,在英文系统中一般称为“remove(移除)”。
3)、物理删除。如果没有主外键关系,一般可以直接进行删除,否则一般要先删除外键表数据,
再删除主键表中的数据。
4)、如果使用了触发器还要检查触发器自动删除的记录是否正确。
5)、删除前要给用户确认提示,删除后要有成功与否信息提示
- 翻页怎么测
- 表单怎么测
- 三角形问题怎么测
- 连续说出 15 个 个 Linux 命令
- 怎么更改 Tomcat 的端口号
答:
1)、Tomcat 默认的端口号为 8080
2)、可以修改 conf 目录的 erver.xml 文件
- 前端性能调优的手段有哪些
思路:服务器中有参考资料《高性能网站建设指南》,出自雅虎,很得业界的认可。
答:
前端性能调优可以参考雅虎的《高性能网站建设指南》,里面提到了 15 条规则,就我所熟悉的
包括以下一些内容:
A、减少 HTTP 请求的数量。如百度更多页面,将很多小图标合成了一个叫 more.png 的大图,只
产生了一次请求,下载后由客户端CSS 进行切割显示。
B、精简 JavaScript。如百度首页将 HTML 和 JS 文件中不必要的空格、回车等都去除掉了,这个
文件只保持了一行代码,减少了网络的传输流量。但是在 163 中,有些 JS 进行了精简,有些没有。
C、将 JS 和 CSS 文件放在外部,减少下载这些代码的时间。
D、尽量使用缓存。减少不必要的请求和对服务器的压力,如 304 状态码的产生。
E、避免重定向。如 301、302,会使页面的响应时间变慢。
TCP/IP 模型每层都有哪些主要协议
层
次
协 议
应
用
层
HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本传输协
议),HTTP 协议的安全版本。
FTP(File Transfer Protocol,文件传输协议),由名知义,用于文件传输。
POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
SSH(Secure Shell,用于替代安全性差的 TELNET),用于加密安全登陆用。
DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作
SNMP(Simple Network Management Protocol,简单网络管理协议),用于网络信息的收集和网络管
理。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置 IP 地址。
传
输
层
TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议
UDP(User Datagram Protocol)是一个简单的面向数据报的传输层协议
网
络
层
IP(Internet Protocol)互联网协议,是用于报文交换网络的一种面向数据的协议。
ARP(Address Resolution Protocol,地址解析协议),用于动态解析以太网硬件的地址。
RIP(Routing Information Protocol)是一种使用最广泛的内部网络上使用的路由协议
ICMP(Internet Control Message Protocol)网络控制消息协定
IGMP(Internet Group Management Protocol)因特网组管理协议,管理多播组成员的一种通信协议
网
络
接
口
层
Wi-Fi 是一个创建于 IEEE 802.11 标准的无线局域网络设备
PPP(Point-to-Point Protocol)点对点协议,通常用在两节点间创建直接的连接
- 常见端口号有哪些
(1)公认端口(Well-Known Ports)
知名端口即众所周知的端口号,范围从 0 到 1023,这些端口号一般固定分配给一些服务。比如 21
端口分配给 FTP(文件传输协议)服务,25 端口分配给 SMTP(简单邮件传输协议)服务,80 端口分配给
HTTP 服务,135 端口分配给 RPC(远程过程调用)服务等等。
(2) 注册端口(Registered Ports)
端口号从 1025 到 49151。它们松散地绑定于一些服务。也是说有许多服务绑定于这些端口,这些端
口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义。
端口号 服务 说明
0 Reserved 通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端
口,当你试图使用通常的闭合端口连接它时将产生不同的结果。一种典型的扫描,
使用
IP 地址为 0.0.0.0,设置 ACK 位并在以太网层广播。
21 FTP FTP 服务器所开放的端口,用于上传、下载。最常见的攻击者用于寻找打开
anonymous的FTP服务器的方法。这些服务器带有可读写的目录。木马Doly Trojan、
Fore、Invisible FTP、WebEx、WinCrash 和 Blade Runner 所开放的端口。
23 Telnet 远程登录,入侵者在搜索远程登录UNIX 的服务。大多数情况下扫描这一端口是
为
了找到机器运行的操作系统。还有使用其他技术,入侵者也会找到密码。木马 Tiny
Telnet Server 就开放这个端口。
25 SMTP SMTP 服务器所开放的端口,用于发送邮件。入侵者寻找 SMTP 服务器是为了传递
他
们的 SPAM。入侵者的帐户被关闭,他们需要连接到高带宽的 E-MAIL 服务器上,
将简单的
信息传递到不同的地址。木马Antigen、Email Password Sender、Haebu Coceda、
Shtrilitz Stealth、WinPC、WinSpy 都开放这个端口。
80 HTTP 用于网页浏览。
443 HTTPS 网页浏览端口,能提供加密和通过安全端口传输的另一种 HTTP。
1433 SQL Microsoft 的 SQL 服务开放的端口。
1521 Oracle
3306 MySQL
8080 代理端口 WWW 代理开放此端口。Tomcat、JBoss
- 简述三次握手和四次挥手
三次握手:
TCP 是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接。
第一次握手:主机 A 发送位码为 syn=1,随机产生 seq number=1234567 的数据包到服务器,主机 B
由 SYN=1 知道,A 要求建立联机;
第二次握手:主机 B 收到请求后要确认联机信息,向 A 发送 ack number=(主机 A 的seq+1),syn=1,ack=1,
随机产生 seq=7654321的包
第三次握手:主机 A 收到后检查 ack number 是否正确,即第一次发送的 seq number+1,以及位码 ack
是否为 1,若正确,主机 A 会再发送 ack number=(主机 B 的 seq+1),ack=1,主机 B 收到后确认 seq 值与 ack=1
则连接建立成功。
完成三次握手,主机 A 与主机 B 开始传送数据。
位码即 tcp 标志位,有 6 种标示:
SYN(synchronous 同步)
ACK(acknowledgement 确认)
PSH(push 传送)
FIN(finish 结束)
RST(reset 重置)
URG(urgent 紧急)
Sequence number(顺序号码)
Acknowledge number(确认号码)

四次挥手:
由于 TCP 连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送
任务后就能发送一个 FIN 来终止这个方向的连接。收到一个 FIN 只意味着这一方向上没有数据流动,一
个 TCP 连接在收到一个 FIN 后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动
关闭。
(1) TCP 客户端发送一个 FIN,用来关闭客户到服务器的数据传送。
(2) 服务器收到这个 FIN,它发回一个 ACK,确认序号为收到的序号加 1。和 SYN 一样,一个 FIN 将占
用一个序号。
(3) 服务器关闭客户端的连接,发送一个 FIN 给客户端。
(4) 客户端发回 ACK 报文确认,并将确认序号设置为收到序号加 1。

- 简述 HTTP 头域的组成
HTTP 的头域包括通用头、请求头、响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域
值三部分组成。
通用头部是客户端和服务器都可以使用的头部,可以在客户端、服务器和其他应用程序之间提供一
些非常有用的通用功能,如Date 头部。
请求头部是请求报文特有的,它们为服务器提供了一些额外信息,说明是谁或什么在发送请求、请
求源于何处,或者客户端的喜好及能力。服务器可以根据请求头部给出的客户端信息,试着为客户端提
供更好的响应。
响应头向客户端提供一些额外信息,比如谁在发送响应、响应者的功能,甚至与响应相关的一些特
殊指令。这些头部有助于客户端处理响应,并在将来发起更好的请求。
实体头部提供了有关实体及其内容的大量信息,从有关对象类型的信息,到能够对资源使用的各种
有效的请求方法。
类
型
主要头域 描 述
通
用
头
Cache-Control 指定请求和响应遵循的缓存机制。
请求时的缓存指令包括no-cache、no-store、max-age、 max-stale、min-fresh、
only-if-cached
响应消息中的指令包括public、private、no-cache、no- store、no-transform、
must-revalidate、proxy-revalidate、max-age。
Pragma 用来包含实现特定的指令,最常用的是 Pragma:no-cache。在 HTTP/1.1 协议中,
它的含义和 Cache- Control:no-cache 相同。
Connection 表示是否需要持久连接。如果 Servlet 看到这里的值为“Keep-Alive”,或者看到
请求使用的是 HTTP 1.1(HTTP 1.1 默认进行持久连接),它就可以利用持久连接
的优点,当页面包含多个元素时(例如 Applet,图片),显著地减少下载所需要
的时间。
Date 表示消息发送的时间,服务器响应中要包含这个头部,因为缓存在评估响应的
新鲜度时要用到,Date 描述的时间表示世界标准时。
Transfer-Encoding WEB 服务器表明自己对本响应消息体(不是消息体里面的对象)作了怎样的编
码
请
求
头
Accept 告诉 WEB 服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类
型下的所有子类型,type/sub-type。
Accept-Charset 浏览器告诉服务器自己能接收的字符集
Accept-Encoding 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什
么压缩方法(gzip,deflate)
Accept-Language 浏览器申明自己接收的语言
Authorization 当客户端接收到来自 WEB 服务器的 WWW-Authenticate 响应时,用该头部来
回应自己的身份验证信息给 WEB服务器
If-Match 如果对象的 ETag 没有改变,其实也就意味著对象没有改变,才执行请求的动
作,获取文档
If-None-Match 如果对象的 ETag 改变了,其实也就意味著对象也改变了,才执行请求的动作,
获取文档。
If-Modified-Since 如果请求的对象在该头部指定的时间之后修改了,才执行请求的动作(比如返
回对象),否则返回代码 304,告诉浏览器该对象没有修改。例如:
If-Modified-Since:Thu, 10 Apr 2008 09:14:42 GMT
If-Unmodified-Since 如果请求的对象在该头部指定的时间之后没修改过,才执行请求的动作(比如
返回对象)
If-Range 浏览器告诉 WEB 服务器,如果我请求的对象没有改变,就把我缺少的部分给
我,如果对象改变了,就把整个对象给我。浏览器通过发送请求对象的 ETag 或
者自己所知道的最后修改时间给WEB 服务器,让其判断对象是否改变了。总
是跟 Range 头部一起使用。
Host 客户端指定自己想访问的 WEB 服务器的域名/IP 地址和端口号
Referer 浏览器向 WEB 服务器表明自己是从哪个网页 URL 获得点击当前请求中的网址
/URL,例如:Referer:http://www.ecdoer.com/
User-Agent 浏览器表明自己的身份(是哪种浏览器)。例如:User-Agent:Mozilla/5.0
(Windows; U; Windows NT 5.1; zh-CN;rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
响
应
头
Age 当代理服务器用自己缓存的实体去响应请求时,用该头部表明该实体从产生到
现在经过多长时间了。
Server WEB 服务器表明自己是什么软件及版本等信息。例如:Server:Apache/2.0.61
Accept-Ranges WEB 服务器表明自己是否接受获取其某个实体的一部分(比如文件的一部分)
的请求。bytes:表示接受,none:表示不接受。
Vary WEB 服务器用该头部的内容告诉 Cache 服务器,在什么条件下才能用本响应
所返回的对象响应后续的请求。假如源 WEB 服务器在接到第一个请求消息时,
其响应消息的头部为:Content-Encoding: gzip; Vary: Content-Encoding,那么 Cache
服务器会分析后续请求消息的头部,检查其 Accept-Encoding,是否跟先前响应
的 Vary 头部值一致,即是否使用相同的内容编码方法,这样就可以防止 Cache
服务器用自己 Cache 里面压缩后的实体响应给不具备解压能力的浏览器。例
如:Vary:Accept-Encoding。
实
体
头
Allow 服务器支持哪些请求方法(如 GET、POST 等)。
Location 表示客户应当到哪里去提取文档,用于将接收端定位到资源的位置(URL)上。
Location 通常不是直接设置的,而是通过HttpServletResponse 的 sendRedirect
方法,该方法同时设置状态代码为302。
Content-Base 解析主体中的相对 URL 时使用的基础 URL。
Content-Encoding WEB 服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。
例如:Content-Encoding:gzip
Content-Language WEB 服务器告诉浏览器理解主体时最适宜使用的自然语言
Content-Length WEB 服务器告诉浏览器自己响应的对象的长度或尺寸,例如:Content-Length:
26012
Content-Location 资源实际所处的位置
Content-MD5 主体的 MD5 校验和
Content-Range 实体头用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。
在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长
度 。 一 般 格 式 :
Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth。例如,传送头
500 个字节次字段的形式:Content-Range:bytes0- 499/1234 如果一个 http 消息
包含此节(例如,对范围请求的响应或对一系列范围的重叠请求),Content-Range
表示传送的范围,Content-Length表示实际传送的字节数。
Content-Type WEB 服务器告诉浏览器自己响应的对象的类型。例如:Content-Type:
application/xml
Etag 就是一个对象(比如 URL)的标志值,就一个对象而言,比如一个 html 文件,
如果被修改了,其 Etag 也会别修改,所以,ETag 的作用跟 Last-Modified 的作用
差不多,主要供 WEB 服务器判断一个对象是否改变了。比如前一次请求某个
html 文件时,获得了其 ETag,当这次又请求这个文件时,浏览器就会把先前获
得 ETag 值发送给 WEB 服务器,然后 WEB 服务器会把这个 ETag 跟该文件的当
前 ETag 进行对比,然后就知道这个文件有没有改变了。
Expires WEB 服务器表明该实体将在什么时候过期,对于过期了的对象,只有在跟 WEB
服务器验证了其有效性后,才能用来响应客户请求。是 HTTP/1.0 的头部。例
如:Expires:Sat, 23 May 2009 10:02:12 GMT
Last-Modified WEB 服务器认为对象的最后修改时间,比如文件的最后修改时间,动态页面的
最后产生时间等等。例如:Last-Modified:Tue, 06 May 2008 02:42:43 GMT
8. HTTP 请求的方式和区别
答:
1)、HTTP 请求的方式主要有 Get 和 Post 两种方式。
2)、get 请求强调向服务器“要”内容,如要图片、HTML 文件
Post 请求强调把数据“给”服务器,常用于表单
3)、表单中,使用 action 控制表单的提交(<form action=”get”> 或 <form action=”post”>)
4)、从协议角度出发,get 方式使用请求的“头”部提交请求内容,相应可提交的数据量较小,
post 方式使用“实体”部提交请求内容,相应提交的数据量较大;从直观来看,get 方式地址栏会直
接出现请求的参数(http://...?username=admin),post 方式地址栏看起来比较干净。
本文使用 文章同步助手 同步