超文本传输协议(HTTP, HyperText Transfer Protocol)
HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么内容以及得到什么响应。请求和响应消息的头以ASCII码给出。
HTTP是一个应用层协议,它位于TCP之上。在另一种意义上,HTTP更像传输层协议,因为它为进程之间跨越不同网络进行内容通信提供了一种方式。这些进程不一定必须是Web浏览器和Web服务器。
链接
浏览器和服务器联系最常用的方法是与服务器的80端口建立一个TCP链接,虽然这个过程不是正式要求的。使用TCP的意义在于浏览器和服务器不用担心如何处理长消息、可靠性或拥塞控制,所有这些事情都由TCP负责处理。
方法
HTTP不仅用于请求一个Web页面,而且支持操作(方法)。
方法 | 描述 |
---|---|
GET | 读取一个Web页面 |
HEAD | 读取一个Web页面的头 |
POST | 附加一个Web页面 |
PUT | 存储一个Web页面 |
DELETE | 删除一个Web页面 |
TRACE | 回应入境请求 |
CONNECT | 通过代理连接 |
OPTIONS | 一个页面的查询选项 |
响应
每个请求都会得到一个响应,每个响应信息由一个状态行及可能的附加信息组成。状态行包括一个3位数字的状态码,这个状态码指明了这个请求是否被满足;如果没有满足,那么原因是什么。第一个数字把响应分成5大组。
代码 | 含义 | 例子 |
---|---|---|
1xx | 信息 | 100:服务器同意处理客户请求 |
2xx | 成功 | 200:请求成功 |
3xx | 重定向 | 301:移动页面 |
4xx | 客户错误 | 403:禁止页面 404:页面未找到 |
5xx | 服务器错误 | 500:服务器内部错误 503:稍后再试 |
请求头
请求行(例如GET)后面可能还有额外的行,其中包含更多的信息。它们统称为请求头(request header)。响应消息也有相应的响应头。有些头可以用在两个方向。
头 | 类型 | 内容 |
---|---|---|
Accept | 请求 | 客户可处理的页面类型 |
Accept-Encoding | 请求 | 客户可接受的页面编码 |
Accept-Language | 请求 | 客户可处理的自然语言 |
Content-Length | 请求 | 页面以字节计的长度 |
Host | 请求 | 服务器的DNS名字 |
Cookie | 请求 | 给服务器发送数据,通常是登录凭证 |
Origin | 请求 | 发起一个针对 跨来源资源共享 的请求 |
Reffer | 请求 | 浏览器所访问的前一个页面 |
User-Agent | 请求 | 有关浏览器和平台的信息 |
Access-Control-Allow-Origin | 响应 | 指定哪些网站可参与到跨来源资源共享过程中 |
Content-Encoding | 响应 | 在数据上使用的编码类型 |
Date | 响应 | 此条消息被发送时的日期和时间 |
Server | 响应 | 服务器的名字 |
Transfer-Encoding | 响应 | 用来将实体安全地传输给用户的编码形式 |
Connection | 请求/响应 | 是否继续保持连接 |
Content-Type | 请求/响应 | 页面的MIMI类型 |