HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。
它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果。
它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
最常用的是HTTP1.0/1.1
最新版本是HTTP2.0,与1.0/1.1相比,有了更高的性能、安全性和灵活性
以前的版本0.9等
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
ftp://192.168.169.121
http://www.baidu.com/index.html
URI:统一资源标识符,包括URL和URN
URL:统一资源标识符,比如http://www.baidu.com/index.html就是一个URL
URN:统一资源名,它是无关物理位置的资源名定义,例子urn:ieft:rfc:2141
在HTTP中,不管是word文件、js文件或者图片都是资源,通可以通过URL进行请求,但每种不同的文件都要进行区分,以便服务端和客户端进行正确处理,比如播放声音、显示文字。
MIME: Multipurpose Internet Mail Extension 多用途因特网邮件扩展
html:text/html
Ascii: text/plain
Json:text/json
Jpg:image/jpeg
Gif:image/gif
Ppt: application/vnd.ms-powerpoint
Quicktime:video/quicktime
HTTP1.0/1.1报文由三部分组成:起始行、首部以及可选、包含数据的主体
<method> <request-url> <version>
<headers><entity-body>
<version> <status> <reason-phrase>
<headers><entity-body>
所有的HTTP报文都以一个起始行做为开始
请求报文:<method> <request-url> <version> 说明要做什么
响应报文:<version> <status> <reason-phrase> 说明结果怎样
HTTP首部字段向请求和响应报文中添加了一些附加信息,是一系列 key-value的列表,比如Content-Type:image/jpeg 表示类型是jpeg图片
通用首部:在请求和响应中都出现的信息
请求首部:只在请求报文中出现的信息
响应首部:只在响应报文中出现的信息
实体首部:描述主题的长度、内容等的信息
扩展首部:在HTTP规范中没有定义的其他信息
HTTP实体是HTTP报文的负荷,是HTTP要传输的数据内容。
HTTP基本的方法包括:GET/POST/HEAD/PUT/TRACE/OPTIONS,用来告诉服务端要做什么操作
PUT:用于向服务端写入文档
TRACE:用于跟踪某个请求
OPTIONS:用于查询服务端支持的方法
DELETE:用于删除服务端某个资源
HTTP在设计之初就被设计成可扩展的,这样就可以适应新的特性。
扩展方法是在HTTP规范中没有定义的方法,它们有特别的用处,但需要服务端进行实现:
LOCK:锁定某个资源
COPY:拷贝某个资源
MOVE:移动某个资源
状态码是响应报文中对请求所做事情的处理结果,以方便客户端处理响应数据
信息性状态码:100~199
成功状态码:200~299
重定向状态码:300~399
客户端错误状态码:400~499
服务端错误状态码:500~599
HTTP1.1引入的状态码,目前存在一些争议
客户端发起的请求大部分是成功,但成功也有不同的区别,所以用一组状态来区分不同的信息
重定向状态码告诉客户端使用替代请求来访问资源,或者返回一个请求以便客户端使用这个请求访问所需资源
客户端错误状态码标识客户端发送了一些错误的信息给服务端
标识服务端自身错误
首部和方法配合工作,共同决定了客户端和服务端能做什么事情
主要包括:通用首部、请求首部、响应首部、实体首部
通用首部是提供了报文的最基本信息,不论报文的类型,都为其提供一些有用信息
请求首部只在请求报文中出现,用于辅助说明谁在发送请求,请求来自何处等等
响应首部只在响应报文中出现,用于说明客户端应该怎么去处理的一些额外信息
实体首部用于标识实体的信息
热文推荐