Http协议学习笔记
2012-10-24 17:04
441 查看
Http协议学习笔记
一.什么是http协议http是Hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义web浏览器与web服务器之间交换数据的过程。
http协议的版本: HTTP/1.0、HTTP/1.1
在HTTP/1.0协议中,客户端与web服务器建立连接后,只能获取一个web资源.
在HTTP/1.1协议中,客户端与web服务器建立连接后,可以获取多个web资源.
二.http协议内容
1.http请求
http请求包括:请求行、请求消息头、请求数据.
http请求的格式:
GET /manager/status HTTP/1.1 // 请求行: 描述客户端的请求方式,请求的资源名称及请求的HTTP协议版本号.
Accept */* //|
Accept-Encoding gzip,deflate //|
Accept-Language zh-CN //|
Connection Keep-Alive //|多个请求消息头: 描述客户端请求哪台主机及客户端的一些环境信息.
Host localhost:8080 //|
Referer http://localhost:8080/ //|
User-Agent Mozilla/4.0 //|
// 空行
Data // 请求数据(请求的实体内容): 表单等数据信息
2.请求方式
常用的请求方式: GET, POST
不常用的请求方式: HEAD, OPTONS, DELETE, TRACE, PUT
用于如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输入地址访问,点超连接访问等都是get,用户如要把请求方式改为post,可通过更改表单的提交方式来实现.
不管POST或GET,都用于向服务器请求某个web资源,这两种方式的区别主要表现在数据传递上:
·如请求方式为GET,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间可以&进行分割,例如:
GET /mail/i.html?name=abc&password=123456 HTTP/1.1
GET方式的特点: 在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K.
·如请求方式为POST,则可以在请求的实体内容中向服务器发送数据,传送的数据量无限制.
3.常用请求消息头
Accept: 用于告诉服务器,客户机支持的数据类型: text/html,image/* (*/*所有类型)
Accept-Charset: 用于告诉服务器,客户机支持的编码
Accept-Encoding: 用于告诉服务器,客户机支持的压缩格式: gzip,deflate
Accept-Language: 用于告诉服务器,客户机的语言.
Host: 用于告诉服务器,客户机想访问的服务器.
If-Modified-Since: 用于告诉服务器,资源的缓存时间.
Referer: 用于告诉服务器,客户机是从哪个资源来访问服务器的,可以用于防盗链.
User-Agent: 用于告诉服务器,客户机的软件环境.
Cookie: 客户机通过这个头,可以向服务器带数据.
Connection: 访问完之后是断开连接还是保持连接: Close/Keep-Alive
Date: 当前时间
4.http响应
http响应包括: 响应状态行、响应消息头、响应数据.
http响应的格式:
HTTP/1.1 200 OK // 响应状态行,描述服务器的处理结果: http协议 响应状态代码 响应状态描述
Server: Apache-Coyote/1.1 //|
Cache-Control: private //|
Expires: Thu, 01 Jan 1970 08:00:00 CST //|
Content-Type: text/html;charset=utf-8 //|多个响应消息头,描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,
Content-Length: 6343 //|可以通知客户端如何处理等一会儿它回送的数据.
Date: Wed, 24 Oct 2012 06:15:58 GMT //|
// 空行
<html>
// 响应数据(实体内容),服务器向客户端回送的数据.
<head> //
5.响应状态行
格式: HTTP版本号 状态码 状态描述
示例: HTTP/1.1 200 OK
状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数,有5类响应状态码:
·100-199: 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程.
·200-299: 表示成功接收请求并已完成整个处理过程,常用200.
·300-399: 为完成请求,客户需进一步细化请求。例如: 请求的资源已经移动到一个新地址.常用302,307和304.
302: 指向别处,307/304: 指向缓存,不回送资源.
·400-499: 客户端的请求有错误,常用404.
·500-599: 服务端出现错误,常用500.
6.常用响应消息头
Location: 这个头配合302指向别处的资源位置.用Location与302于实现请求重定向.
Server: 服务器通过这个头,告诉服务器的类型: Apache-Coyote/1
Content-Encoding: 服务器通过这个头,告诉浏览器回送数据的压缩格式:gzip
Content-Length: 服务器通过这个头,告诉浏览器回送数据的长度.
Content-Language: 服务器通过这个头,告诉浏览器回送的语言环境.
Content-Type: 服务器通过这个头,告诉浏览器回送数据的类型: text/html,image, Tomcat服务器conf/web.xml文件列出了所有的类型.
Last-Modified: 服务器通过这个头,告诉浏览器当前资源缓存时间.
Refresh: 服务器通过这个头,告诉浏览器隔多长时间刷新一次.
Content-Disposition: 服务器通过这个头,告诉浏览器以下载方式打开数据.
Transfer-Encoding: 服务器通过这个头,告诉浏览器数据的传送格式: chunked
Set-Cookie: Cookie相关的头.
ETag: 与缓存相关的头.生成的资源数据的唯一标识符.
Expires: 服务器通过这个头,告诉浏览器把回送的资源缓存多长时间,-1或0则不缓存
Cache-Control: 控制缓存: no-cache
Pragma: 控制缓存: no-cache
Connection: 响应完之后是断开连接还是保持连接: Close/Keep-Alive
Date: 当前时间
三.HTTP实用的消息头字段:
1.HTTP请求消息头字段
Range: 指示服务器只传输一部分Web资源.实现断点续传功能.Range字段可以通过三种格式设置要传输的字节范围:
·Range: bytes=1000-2000 传输范围从1000到2000字节
·Range: bytes=1000- 传输从1000个字节以后的所有内容.
·Range: bytes=1000 传输最后1000个字节.
2.HTTP响应消息头字段
Accept-Ranges: 这个字段说明Web服务器是否支持Range,支持则返回Accept-Ranges: bytes,不支持则返回Accept-Ranges: none.
Content-Range: 指定了返回的Web资源的字节范围,字段值格式: 例: Content-Range: 1000-3000/5000
相关文章推荐
- HTTP协议学习笔记---HTTP持久连接和如何正确地关闭HTTP连接
- HTTP协议学习笔记---HTTP持久连接和如何正确地关闭HTTP连接
- 图解HTTP协议 第2章 简单的HTTP协议学习笔记
- 图解http学习笔记2.简单http协议
- 学习笔记-HTTP通讯协议
- HTTP 协议 学习笔记 1
- http 协议学习笔记(一)
- HTTP协议--学习笔记
- HTTP协议 学习笔记
- JAVA学习笔记Day25——HTTP协议
- HTTP协议学习笔记
- HTTP协议学习笔记2
- http协议学习笔记
- linux高性能服务器编程学习笔记四:HTTP协议相关格式
- HTTP学习笔记11 基于HTTP的追加协议
- HTTP协议 学习笔记
- 学习笔记-从互联网协议到ios中http协议
- iOS 学习笔记——0003(iOS之HTTP协议网络传输)
- 学习笔记分享(1),Http协议中Post方式与Get方式的传参形式
- HTTP学习笔记:HTTP协议基础