HTTP协议(一)基本概念、HTTP方法、HTTP状态码
1.HTTP是什么?
它的全名叫:HyperText Transfer Protocol ,中国名字:超文本传输协议 ;
它是可靠的数据传输协议,是Internet 的多媒体信使,即使数据相隔天涯海角,它也能确保数据准确、无误的传递给彼此,这有点像快递员的工作(不过快递员可能会损坏、遗失你的东西,HTTP不会);
每天有数以亿计的web浏览器通过它获取web服务器上的HTML页面、音/视频文件、JPG图片、java小程序...等等信息。
2.客户端和服务器
HTTP客户端:你每天都在使用的各种web浏览器(IE、Google Chrome、Firefox ...and so on)
Web服务器:它是web资源的宿主,所有的web资源(静态文件或生成动态资源的软件程序)都放在web服务器里
简单的交互过程:HTTP客户端向服务器发出请求,服务器在HTTP响应中回送被请求的数据
3.HTTP传输数据的媒体类型MIME
HTTP给每种传输对象都定义了一个MIME Type的格式标签(在HTTP信息头的Connect-type属性中定义:Connect-type:text/html),浏览器从服务器获取一个对象时,会检查相关的MIME类型,看看它是否知道如何去处理这个对象。
常见的MIME类型有数百种之多,大多数浏览器都支持处理这些对象类型。
以下列举几种MIME:
HTML文本文档:text/html
JPEG图片:image/jpeg
GIF图片:image/gif
js文件:application/x-javascript
更多MIME类型请参看:http://www.w3school.com.cn/media/media_mimeref.asp
4.URI、URL、URN
URI:Uniform Resource Identifier 统一资源标识符,它是web服务器资源的名字(就像你的邮寄地址一样,有了它,在全世界都能根据定位到你并确保信件能寄到你手中)
给定了web资源的URI,HTTP就可以定位到这个web资源并解析出对象。
URI有两种形式:URL和URN
URL:Uniform Resoure Locator 统一资源定位符,它是URI最常见的一种形式(目前大家接触到的URI基本都是URL形式吧),它描述了一个特定Web服务器上某一资源的特定位置
URL标准格式包含三个部分,以URL:http://www.cnblogs.com/wolfshining/p/7921999.html 为例:
第一部分:scheme 它说明了访问资源时使用的协议类型(通常就是HTTP协议http://)
第二部分:服务器地址或域名(www.cnblogs.com)
第三部分:路径,它指向某一特定资源(wolfshining/p/7921999.html)
URN:Uniform Resource Name 统一资源名,它是URI的第二种形式,通过URN可以将资源四处搬移(因为URN没有位置),还可以用同一个名字通过多种网络协议来访问资源,URN还处于实验阶段
下图显示HTTP客户端如何通过URL精确访问web服务器某特定资源的:
5.HTTP事务
一个HTTP事务由一条HTTP客户端发往web服务器的请求命令(方法)和一个从服务器返回给客户端的响应结果组成。
发送的请求或响应结果都是通过HTTP报文的格式进行的:
6.HTTP方法与状态码
HTTP请求命令也通常叫做HTTP方法(HTTP Method),每个HTTP请求报文里都包含一个Method,这个Method告诉浏览器需要执行什么操作(是获取一个静态文件,还是删除一个文件等等)
常见的HTTP Method包含下列五种:
HTTP 方法 | 描述 |
GET | 从服务器向客户端发送指定的资源 |
PUT | 将客户端发来的数据存储到指定的资源中去 |
DELETE | 从服务器中删除指定资源 |
POST | 将客户端发来的数据发送到一个服务器网关应用程序 |
HEAD | 仅发送指定资源响应中的HTTP首部 |
常见的HTTP状态码:
HTTP状态码 | 描述 |
1XX | 指定客户端应相应的某些动作,代表请求已被接受,需要继续处理。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。 |
2XX | 请求成功处理完毕。表示请求已成功,请求所希望的响应头或数据体将随此响应返回 |
3XX | 重定向,代表需要客户端采取进一步的操作才能完成请求,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。这系列中最常见的有301、302状态码。 |
4XX | 客户端错误,表示请求错误。代表了客户端看起来可能发生了错误,妨碍了服务器的处理。常见有:401、404状态码。 |
5XX | 服务器错误,服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。常见有500、503、502状态码。 |