HTTP协议概要

简介

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报文自己是由多行数据组成的字符串文本。
两种报文的结构以下:分布式

请求报文

clipboard.png

clipboard.png

请求行包括:请求方法,请求URL,HTTP协议及版本。ide

响应报文

clipboard.png

clipboard.png

状态行包括:HTTP协议及版本,代表响应结果的状态码,缘由短语(状态描述)。spa

返回结果的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有效性及资源更新的日期时间等。

相关文章
相关标签/搜索