**
HTTP是一个属于应用层的面向对象的协议。
**
HTTP版本历史:
0.9 已过时。只接受 GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持 POST 方法,所以客户端无法向服务器传递太多信息。
HTTP/1.0 这是第一个在通讯中指定版本号的HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中
HTTP/1.1 当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度
HTTP/1.1相较于 HTTP/1.0 协议的区别主要体现在:
1 缓存处理
2 带宽优化及网络连接的使用
3 错误通知的管理
4 消息在网络中的发送
5 互联网地址的维护
6 安全性及完整性
HTTP协议特点:
1:支持客户/服务器模式
2:简单快速:只需传送请求方法和路径,请求常用方法GET,POST,HEAD,由于HTTP协议简单,
使得HTTP服务器的程序规模小,因而通信速度很快。
3:灵活:HTTP允许传输任意类型的数据对象
4:无连接:限制每次连接只处理一个请求,采用这种方式可以节省传输时间
5:无状态:对于事务处理没有记忆能力
HTTP协议之URL
http(超文本传输协议)是一个基于请求与相应模式的、无状态的、应用层协议,常基于TCP的连接方式。
HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够信息)
URL:统一资源定位符
URI:统一资源标识符
URN:统一资源名称
URL格式分三部分:第一部分是协议,第二部分是存有该资源的主机IP地址(有时也表示端口号),第三部分是主机资源的具体地址,如目录和文件名
HTTP协议之请求
http请求由三部分组成,分别是:请求头、消息报头、请求正文
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本
请求方法有多种,常用的有GET、POST
GET - 从指定的资源请求数据。查询字符串(名称/值对)是在 GET 请求的 URL 中发送的
POST - 向指定的资源提交要被处理的数据。查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的
GET与POST区别:
GET 请求可被缓存
GET 请求保留在浏览器历史记录中
GET 请求可被收藏为书签
GET 请求不应在处理敏感数据时使用
GET 请求有长度限制
GET 请求只应当用于取回数据
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中
POST 不能被收藏为书签
POST 请求对数据长度没有要求
HTTP协议之响应
在接受和解释请求消息后,服务器返回一个HTTP响应消息。三部分组成:状态行,消息报头,响应正文。
1XX:指示信息–表示请求已接受,继续处理
2XX:成功–表示请求已被成功接受、理解、接受
3XX:重定向–要完成请求必须进行更进一步的操作
4XX:客户端错误–请求有语法错误或请求无法实现
5XX:服务器端错误–服务器未能实现合法的请求
常见状态吗
200 OK // 客户端请求成功
400 Bad Request // 客户端请求有无法错误,不能被服务器所理解
404 Not Found // 请求资源不存在,输入了错误的URL
500 Internal Server Error // 服务器发生不可预期的错误
503 Server Unavailable // 服务端当前不能处理客户端的请求,一段时间后可能恢复正常
响应正文就是服务器返回的资源的内容
HTTP协议之消息报头
1.普通报头:有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息
2.请求报头:允许客户端想服务端传递请求的附加信息以及客户端自身的消息
3.响应报头:允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的消息和对Request-URI所标识的资源进行下一步访问的信息
4.实体报头:请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文和请求所标识的资源的元信息。