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报文自己是由多行数据组成的字符串文本。
两种报文的结构以下:分布式
请求行包括:请求方法,请求URL,HTTP协议及版本。ide
状态行包括:HTTP协议及版本,代表响应结果的状态码,缘由短语(状态描述)。spa
状态码的职责是:当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户能够知道服务器端是正常处理了请求,仍是出现了错误。
状态码类别代理
状态码 | 类别 | 状态码描述 |
---|---|---|
1xxx | 信息状态码 | 接受的请求正在处理 |
2XXX | 成功状态码 | 请求正常处理完毕 |
3XX | 重定向状态码 | 须要进行附加操做以完成请求 |
4XX | 客户端错误状态码 | 服务器没法处理请求 |
5XX | 服务器错误状态码 | 服务器处理请求出错 |
状态码一共约60种,经常使用的大概14种。对象
2XX的响应结果代表请求被正常处理了。
200 OK
表示从客户端发来的请求在服务器端被正常处理了。
204 No Content
表示服务器端接受的请求已成功处理,但在返回的响应报文中不包含实体的主体部分。图片
206 Partial Content
表示客户端对资源进行了范围请求,而服务器成功执行了该请求。响应报文中包含由Content-Range指定范围的实体内容。
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的响应结果代表客户端是发生错误的缘由所在。
400 Bad Request
表示请求报文中存在语法错误。发生错误时,需修改请求的内容后再次发送请求。
401 Unauthorized
表示发送的请求须要有经过HTTP认证的认证信息。若以前已进行过1次请求,则表示用户认证失败。
返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用以质询用户信息。当浏览器初次接受到401,会弹出认证用的对话窗口。
403 Forbidden
代表客户端对请求资源的访问被服务器拒绝了。
未得到文件系统访问受权,访问权限出现问题等状况均可能是发生403的缘由。
404 Not Found
代表服务器上没法找到请求的资源。常见缘由,输错了URL地址。
5XX的响应结果代表服务器自己发生错误。
500 Internal Server Error
代表服务器端在执行请求时发生了错误。也多是Web应用存在bug或某些临时故障。
503 Service Unavailable
代表服务器暂时处于超负荷或正在进行停机维修,如今没法处理请求。
方法一共约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有效性及资源更新的日期时间等。