HTTP 协议
一、简介
1. 基于TCP/IP通信协议
2. 浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求
3. HTTP默认端口号为80
4. HTTP是无连接,限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。
5. HTTP是无状态,是指协议对于事务处理没有记忆能力
6. HTTP协议通信流程:
二、消息结构
1. 一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。
2. 一个HTTP"服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。
3. HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
4. 客户端请求消息:
请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成
5. 服务器响应消息:
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文
三、请求方法
四、响应头信息
- Allow : 服务器支持哪些请求方法(如GET、POST等)。
- Content-Encoding : 文档的编码(Encode)方法。
- Content-Length : 表示内容长度。
- Content-Type : 表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。
- Date : 当前的GMT时间。
- Expires : 应该在什么时候认为文档已经过期,从而不再缓存它?
- Last-Modified : 文档的最后改动时间。
- Location : 表示客户应当到哪里去提取文档。
- Refresh : 表示浏览器应该在多少时间之后刷新文档,以秒计。这种功能通常是通过设置HTML页面HEAD区的<META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://host/path">实现.
- Server : 服务器名字。
- Set-Cookie : 设置和页面关联的Cookie。
- WWW-Authenticate : 客户应该在Authorization头中提供什么类型的授权信息?
五、状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
1. 常见的状态码
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
2. 状态码的分类
状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用,状态码一共有五类:
- 1 开头 : 信息,服务器收到请求,需要请求者继续执行操作
- 2 开头 : 成功,操作被成功接收并处理
- 3 开头 : 重定向,需要进一步的操作以完成请求
- 4 开头 : 客户端错误,请求包含语法错误或无法完成请求
- 5 开头 : 服务器错误,服务器在处理请求的过程中发生了错误
3. 状态码的列表