HTTP的基本概念、方法、状态码
主要介绍下HTTP中的基本概念、HTTP 方法、常见状态码,基本目录如下:
-
基本概念
- HTTP 介绍
- URL、URN、URI
-
HTTP 请求方法
- GET
- HEAD
- POST
- PUT
- PATCH
- DELETE
- OPTIONS
- CONNECT
- TRACE
-
状态码
1. 基本概念
1.1 HTTP介绍
-
HTTP 协议默认端口是 80
-
定义一个无状态的请求/响应协议,是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准,基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等).
-
工作于客户端-服务端架构上,从万维网服务器传输超文本到本地浏览器的传送协议。Web服务器根据接收到的请求后,向客户端发送响应信息,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求
-
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
-
主要的5个特点
-
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
-
灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
-
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
-
无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
-
支持 B/S 及 C/S 模式。
-
-
HTTP规定在HTTP客户与HTTP服务器之间的每次交互,都由一个ASCII码串构成的请求和一个“类MIME(MIME—like)”的相应组成。HTTP报文通常都是用TCP连接
-
万维网客户把HTTP请求报文作为TCP连接三次握手的第三个报文的数据发送给万维网服务器,服务器收到HTTP请求报文后,就把所请求的文档作为响应报文返回给客户。
-
HTTP/1.0的主要缺点,是每请求一个文档就要有两倍RTT的开销。HTTP/1.1使用持续连接。所谓持续连接,就是万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文,这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。
-
HTTP/1.1协议的持续连接有两种方式,即非流水线方式和流水线方式。非流水线方式的特点是,客户在收到前一个响应后才能发出下一个请求;流水线方式的特点是,客户在收到HTTP的响应报文之前就能接着发送新的请求报文。
-
HTTP请求报文和响应报文都由三个部分组成:开始行、首部行、实体主题。开始行用于区别报文时响应报文还是请求报文,在请求报文中,开始行叫做请求行,而在响应报文中,开始行叫做状态行。
-
请求报文请求行只有三个内容:方法、请求资源的URL、HTTP的版本。响应报文的状态行也包括三项内容:HTTP的版本、状态码、解释状态码的简单短语。
1.2 URI、URL、URN
URI 包含 URL 和 URN,目前 WEB 只有 URL 比较流行,所以见到的基本都是 URL。
- URI(Uniform Resource Identifier,统一资源标识符)
- URL(Uniform Resource Locator,统一资源定位符)
- URN(Uniform Resource Name,统一资源名称)
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL(Locator)是一种特殊类型的URI,包含了用于查找某个资源的足够的信息
URI一般由以下三部分组成:
1. 访问资源的命名机制
2. 存放资源的主机名
2. 资源自身的名称,由路径表示,着重强调于资源。
URL 是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。,是URI的子集
URN 通过名字表示资源
URI URL URN 的关系 :URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。
2.HTTP 请求方法
-
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
-
HTTP1.1 新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
方法信息介绍如下:
- GET: 获取资源——请求指定的页面信息,并返回实体主体。
- HEAD: 获取报文首部——类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
- POST: 传输实体——向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
- PUT: 上传文件——从客户端向服务器传送的数据取代指定的文档的内容。
- DELETE: 删除文件——请求服务器删除指定的页面。
- CONNECT: 与服务器建立连接——HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
- OPTIONS: 允许客户端查看服务器的性能。
- TRACE: 追踪访问路径——回显服务器收到的请求,主要用于测试或诊断。
3.HTTP状态码
状态码 | 类型 | 原因 |
---|---|---|
1XX | Informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | edirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
-
1XX 信息
- 100 Continue :表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应。
-
2XX 成功
-
200 OK
-
204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。
-
206 Partial Content :表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容。
-
-
3XX 重定向(注意301302)
-
301 Moved Permanently :永久性重定向
-
302 Found :临时性重定向
-
303 See Other :和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。
注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。
-
304 Not Modified :如果请求报文首部包含一些条件,例如:If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since,如果不满足条件,则服务器会返回 304 状态码。
-
307 Temporary Redirect :临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。
-
-
4XX 客户端错误
-
400 Bad Request :请求报文中存在语法错误。
-
401 Unauthorized :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进行过一次请求,则表示用户认证失败。
-
403 Forbidden :请求被拒绝。
-
404 Not Found
-
-
5XX 服务器错误
-
500 Internal Server Error :服务器正在执行请求时发生错误。
-
503 Service Unavailable :服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
-