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报文叫做请求报文,响应端(服务器)的叫做响应报文。HTTP报文本身是由多行数据组成的字符串文本。
两种报文的结构如下:

请求报文

《HTTP协议概要》

《HTTP协议概要》

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

响应报文

《HTTP协议概要》

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

    原文作者:HTTP
    原文地址: https://segmentfault.com/a/1190000010105436
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞