1

简介

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协议及版本。

响应报文

clipboard.png

clipboard.png

状态行包括: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有效性及资源更新的日期时间等。


Healy
204 声望0 粉丝

前端新人学习ing!