简介
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。主要特点及作用
HTTP协议用于客户端及服务器端之间的通信
通过请求和响应的交换达成通信
HTTP协议是无状态协议;即HTTP协议不对请求和响应之间的通信状态进行保存,对于发送过的请求和响应都不做持久化处理。
HTTP报文
用于HTTP协议交互的信息被称为HTTP报文。请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器)的叫做响应报文。HTTP报文本身是由多行数据组成的字符串文本。
两种报文的结构如下:请求报文:
请求行包括:请求方法,请求URL,HTTP协议及版本。
响应报文:
状态行包括:HTTP协议及版本,表明响应结果的状态码,原因短语(状态描述)。
返回结果的HTTP状态码
状态码的职责是:当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。
状态码类别状态码 | 类别 | 状态码描述 |
---|---|---|
1xxx | 信息状态码 | 接受的请求正在处理 |
2XXX | 成功状态码 | 请求正常处理完毕 |
3XX | 重定向状态码 | 需要进行附加操作以完成请求 |
4XX | 客户端错误状态码 | 服务器无法处理请求 |
5XX | 服务器错误状态码 | 服务器处理请求出错 |
状态码一共约60种,常用的大概14种。
2xx 成功
2XX的响应结果表明请求被正常处理了。
200 OK 表示从客户端发来的请求在服务器端被正常处理了。204 No Content 表示服务器端接受的请求已成功处理,但在返回的响应报文中不包含实体的主体部分。206 Partial Content
表示客户端对资源进行了范围请求,而服务器成功执行了该请求。响应报文中包含由Content-Range指定范围的实体内容。3xx 重定向
3XX的响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。
301 Moved Pemannently 永久性重定向。表示请求的资源已经被分配了新的URL,以后应使用资源现在所指的URL。302 Found 临时性重定向。表示请求的资源已经被分配新的URL,希望用户能使用新的URL访问。与301状态码相似,但302代表资源不是永久移动,只是临时性质的。303 See Other表示有对应的资源可以在另一个URL处找到,所以客户端必须使用GET方法来获取新位置的资源。 304 Not Modified表示当客户端发送附带条件的请求时(请求报文中含有:If-Matach、If-Modified-Since、If-None-Match等任一首部字段),服务允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304 Not Modified(此时服务器端资源未改变,可直接使用客户端未过期的缓存)。307 Temporary Redirect临时重定向。与302有相同含义,但不会从POST变为GET。4xx 客户端错误
4XX的响应结果表明客户端是发生错误的原因所在。
400 Bad Request表示请求报文中存在语法错误。发生错误时,需修改请求的内容后再次发送请求。401 Unauthorized表示发送的请求需要有通过HTTP认证的认证信息。若之前已进行过1次请求,则表示用户认证失败。返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用以质询用户信息。当浏览器初次接受到401,会弹出认证用的对话窗口。403 Forbidden表明客户端对请求资源的访问被服务器拒绝了。未获得文件系统访问授权,访问权限出现问题等情况都可能是发生403的原因。404 Not Found 表明服务器上无法找到请求的资源。常见原因,输错了URL地址。5XX 服务器错误
5XX的响应结果表明服务器本身发生错误。
500 Internal Server Error 表明服务器端在执行请求时发生了错误。也可能是Web应用存在bug或某些临时故障。503 Service Unavailable表明服务器暂时处于超负荷或正在进行停机维修,现在无法处理请求。告知服务器意图的HTTP方法
方法一共约8种,分别为:
方法 | 说明 | |
---|---|---|
GET | 获取资源 | |
POST | 传输实体主体 | |
PUT | 传输文件 | |
DELETE | 删除文件 | |
HEAD | 获得报文首部 | |
OPTIONS | 询问支持的方法 | |
TRACE | 追踪路径 | |
CONNECT | 要求用隧道协议连接代理 |
下面对使用最多的几种方法进行介绍:
GET:获取资源
GET方法用来请求访问已被URL识别的资源。指定的资源经服务器端解析后返回响应内容。GET用来从服务器获取数据。POST:传输实体主体
虽然GET方法也可以传输实体的主体,但一般不用GET方法进行传输,而用POST方法。POST方法用于向服务器传送数据。PUT:传输文件
PUT方法用来传输文件。类似FTP协议的文件上传。在请求报文的主体中包含文件内容,然后要求服务器保存到请求URL指定的位置。DELETE:删除文件
与PUT方法相反,要求服务器删除请求指定URL位置的资源。HEAD方法:获得报文首部
与GET方法一样,但是不返回报文主体部分。仅返回指定URL有关的响应首部信心。用于确认URL有效性及资源更新的日期时间等。