HTTP协议

1 概述

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于服务器与本地浏览器间通信的传送协议,是一个基于TCP的应用层协议。

   

2 特性

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。
  • 灵活:HTTP允许传输任意类型的数据对象。
  • 无状态:HTTP服务器默认不保存客户机的信息。
  • 支持B/S及C/S模式。

       

3 通信过程

1)客户机向服务器请求建立TCP连接;

2)建立连接后,客户机发送一个请求报文给服务器;

3)服务器接到请求后,给予相应的响应信息。

   

4 请求报文

一个典型的请求报文如下:

GET /562f25980001b1b106000338.jpg HTTP/1.1

Host img.mukewang.com

User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36

Accept image/webp,image/*,*/*;q=0.8

Referer http://www.imooc.com/

Accept-Encoding gzip, deflate, sdch

Accept-Language zh-CN,zh;q=0.8

分为三个部分

  • 请求行:包括请求方法、访问路径、HTTP协议版本。
  • 请求头部:指定一些属性信息。
  • 主体:GET请求的主体为空,POST请求的主体包含表单信息。

格式如下:

   

5 响应报文

一个典型的响应报文如下:

HTTP/1.1 200 OK

Date: Fri, 22 May 2009 06:07:21 GMT

Content-Type: text/html; charset=UTF-8

   

<html>

<head></head>

<body>

<!--body goes here-->

</body>

</html>

分为三个部分

  • 状态行:包括HTTP协议版本、状态码、状态信息。
  • 响应报头:指定一些属性信息。
  • 响应正文:服务器返回给客户端的文本信息。

   

6 请求方法

GET

查询数据

POST

将实体提交到指定的资源,可能导致服务器上的数据新建或修改

PUT

新建或修改服务器上的指定数据

DELETE

删除服务器上的指定资源

HEAD

发送一个与GET请求类似的请求,但不要求返回响应正文,常用于故障跟踪

OPTIONS 

返回请求的资源所支持的方法

TRACE

追踪一个资源请求中间所经过的代理(该方法不能由浏览器发出)

   

7 报头

7.1 请求报头

Accept

客户端接受的MIME类型

Accept-Encoding

能接受的压缩格式

Accept-Lanague

能接受的语言

Connection

支持的keep-alive特性

Host

制定被请求的Internet主机和端口号

User-Agent

客户端操作系统、浏览器属性等

7.2 响应报头

Server

服务器类型、操作系统

Content-Type

响应正文的媒体类型

Content-Encoding

响应的压缩格式

Content-Language

响应的自然语言

Content-Length

响应正文的字节长度

Keep-Alive

保持连接的时间

   

8 状态码

1xx:

信息性状态码

100:客户端应当继续发送请求

101:通知客户端采用不同的协议来完成这个请求

2xx

成功状态码

200:OK,正常响应

201:Created,创建新实体

202:Accepted,异步处理已请求成功

204:No Content,响应实体为空

3xx

重定向状态码

301:Moved Premanently,永久重定向,Location响应首部的值仍为当前URL,因此为隐藏重定向

302:Found,临时重定向,显式重定向, Location响应首部的值为新的URL

304:Not Modified,请求的资源未修改,比如本地缓存的资源文件和服务器上比较时,发现并没有修改,服务器返回一个304状态码,告诉浏览器,你不用请求该资源,直接使用本地的资源即可

4xx

客户端错误状态码

400:Bad Request,请求的语法错误

401:Unauthorized,请求资源无法授权给未验证用户

403:Forbidden,请求资源未授权给当前用户

404:Not Found,请求的URL资源并不存在

405:Method Not Allowed,请求方法不匹配

406 :Not Acceptable,请求资源的媒体类型不匹配

5xx

服务器端错误状态码

500:Internal Server Error,服务器内部错误

501:Not Implemented,服务器不支持当前请求

502:Bad Gateway,前面代理服务器联系不到后端的服务器时出现

504:Gateway Timeout,这个是代理能联系到后端的服务器,但是后端的服务器在规定的时间内没有给代理服务器响应

   

9 HTTP版本

9.1 HTTP/1.0

这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中。

9.2 HTTP/1.1

  • 默认采用持久连接
  • 缓存处理
  • 支持MIME

9.3 HTTP/2

  • 异步连接复用
  • 头压缩
  • 超文本传输

   

posted @ 2017-03-15 11:26  D调的华丽呢  阅读(398)  评论(0编辑  收藏  举报