目录结构:
一、HTTP概述
概念:HTTP(HyperText Transfer Protocol,超文本传输协议)是一种客户端(用户)请求和服务器(网站)应答的标准,它是作为一种应用层协议 ,应用于分布式、协作式、超媒体信息系统。是一种请求/响应式的协议。
客户端与服务器在HTTP下的交互过程:客户端与服务器建立连接之后,就可以向服务器发送请求(HTTP请求),服务器收到请求后会做出响应(HTTP响应)。
二、HTTP特点
①HTTP协议支持客户端/服务器模式(浏览器就是一种web客户端)
②简单快速。客户端向服务器请求服务时,只需要传送请求方式和路径。由于HTTP比较简单,使得HTTP服务器的程序规模比较小,因而通信速度很快。
③灵活。HTTP允许传输任意类型的数据,正在传输的数据类型由Content-Type加以标记。
④无状态。HTTP是无状态协议。无状态协议指对于事务处理没有记忆能力。这导致了如果后续处理需要前面的细腻些,则必须重新传输,这样可能导致每次连接传送的数据量增大。
三、HTTP1.0与HTTP1.1
版本 | 区别 | 图示 | 关系 |
1.0 | 基于HTTP1.0的交互过程中,每次只能处理一个HTTP请求,即一次请求必须经过建立连接、发送请求消息、响应消息、关闭连接四个步骤。 |
| 1.1版本解决了1.0版本中客户端与服务器交互时每次请求都需要与服务器重新建立连接所导致的耗时问题及网页访问速度慢的问题。 |
1.1 | 基于HTTP1.1的交互过程中,当客户端与服务器建立连接后,客户端可以向服务器发送多个请求,并且在发送下次请求时不需要等待上次请求的返回结果,服务器会按照发送请求的先后顺序一次返回相应结果。即在一次TCP连接上可以同时传送多个HTTP请求和响应。(持久性连接) |
|
四、HTTP消息
1、HTTP请求消息
(1)请求行
请求行位于请求消息的第一行,它包括三个部分:请求方式、资源路径、所使用的
HTTP版本。形如:GET /index.html HTTP/1.1
注意:请求行中的每个部分需要用空格分开,最后以回车换行符结束。
表中列举了八种HTTP请求方式,其中最常见的就是GET和POST方式:
GET:当用户浏览器地址栏中直接输入某个URL地址或者单击网页上的一个超链接时,浏览器将使用 GET方式发送请求。若将网页上的form表单的method熟悉设置为GET或者不设置method 属性时,当用户提交表单时,浏览器也会用GET方式发送请求。
注意:如果请求的URL中带有参数,则浏览器生成的请求消息中,参数部分将附加在请求行总资源路 径后面如:http://www.itcasr.cn/javaforum?name=oldking&psd=hnxy
?后面的内容为参数信息,参数是由参数名和参数值组成的,并且中间使用=进行连接,多个 参数之间用&连接
POST:如果网页上form表单的method属性设置为POST,当用户提交表单时,浏览器将使用 POST方式提交。
POST和GET方式的区别:
①POST传输数据大小无限,GET传输数据大小不超过2K
②在带参数的情况下,POST是通过实体内容进行传输参数的,GET是通过将参数附加在请求行的资源路径后面中进行传输的。
③POST比GET请求方式更安全,GET请求方式的参数信息会在URL地址栏中明文显示,而POST请求方式则隐藏在实体内容中,用户看不到。
(2)请求头
在HTTP请求消息中,请求行之后便是请求若干请求头。请求头主要用于向服务器传递附加信 息, 例 如客户端可以接收的数据类型、压缩方法、语言以及请求的超链接所属页面的URL地址等信息。
注意:每个请求头由头字段名称和值构成,头字段名称和值之间用:和空格连接,以回车 换行符结 束。头字段名称不区分大小写,习惯上将单词第一个字母大写。
常见请求头:
①可作为Accpet头字段的MIME类型:
Accpet:text/html 表明客户端希望接收HTML文本
Accpet:image/gif 表明客户端希望接收GIF图像格式的资源
Accpet:image/* 表明客户端可以接收所有image格式的子类型
Accpet:*/* 表明客户端可以接收所有格式的内容
②Accpet-Encoding 和Accpet消息头不同,Accpet请求指导的MIME类型是解压后的实体内容类型, Accpet-Encoding消息头指定的是实体内容压缩的方式。
③在HTTP1.1中,浏览器和其他客户端发送的每个请求消息中必须包含Host请求头字段,以便web服 务器根据Host头字段中的主机名区分客户端所要访问的虚拟Web站点。
HTTP响应消息
(1)响应状态行
HTTP响应状态位于响应消息第一行,包括HTTP版本、状态码、对状态码进行描述的文本信息。
形如:HTTP/1.1 200 ok
(2)HTTP响应头
HTTP响应消息中,第一行为响应状态行,紧接着是若干个响应头,服务器通过响应头向客户端传递附加消息,包括服务程序名、被请求资源需要的认证方式、客户端请求资源的最后修改时间、重定向地址等消息。
常见响应头字段
①Location头字段和大多数3XXX状态码配合使用,一边通知客户端自动重新连接到新的地址请求文档。因为当前响应斌没有直接返回结果给客户端,所有使用Location头字段的HTTP消息不应该有实体内容。由此可见,在HTTP消息头中不能同时出现Location和Content-Type这两个字段。
②Refresh的时间值后面还可以增加一个URL参数,时间值与URL之间用;分隔,用于告诉浏览器在指定时间后跳转到其他网页。值以秒为单位。
③在设置Cotent-Disposition之前,一定要设置content-Type头字段