HTTP协议,超文本传输协议HYPER TEXT TRANSFER PROTOCOL的缩写,用于从万维网服务器传输超文本到本地浏览器的协议。
它基于TCP/IP通信协议来传输数据(HTML文件,图片,查询结果等)
HTTP协议属于应用层。它允许传输任意类型的数据对象,正在传输的类型由CONTENT-TYPE标记。
1.HTTP协议是一种无连接协议:
指的是每次连接只处理一个请求,服务端处理完客户端一次请求,等到客户端作出回应之后便断开连接;这种方式有利于节省传输时间;然后随着互联网的发展,一台服务器同一时间处理的请求越来越多,如果依然采用原来的方式,将会在建立和断开连接上花费大部分时间;
HTTP/1.0:持久连接被提出来;即当一个TCP连接服务器多次请求:客户端会在请求Header中携带Connection:Keep-Alive;向服务器请求持久连接,如果服务端允许就会在响应报文中加上相同的字段;
为了解决这一问题:提出了pipellining的概念;客户端发起一次请求时不必等待响应便直接发起第二个请求;服务端按照请求的顺序一次返回结果;
PS:HTTP借助于底层的TCP虚拟连接,HTTP协议本身无需连接;就好比A和B打电话,A和B是借助于底层的简化先连接交换信息;但是A和B本身无需连接;
无状态: 是指服务端对于客户端每次发送的请求都认为它是一个新的请求,上一次会话和下一次会话没有联系; HTTP 协议这种特性有优点也有缺点,优点在于解放了服务器,每一次请求“点到为止”不会造成不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。
3.GET和POST的区别
1.GET请求把请求内容放在URL的querystring里,POST请求把请求内容放在FORM里,也就是请求的BODY里。
2.GET请求的数据大小有长度限制,实际上是浏览器限制URL的长度,POST没有限制。
3.GET请求存在安全性问题,因为数据直接写在URL里,会CACHE,查浏览记录也可以查到。
除了GET和POST还有PUT和DELETE,分别是增加和删除
4.一些常见的HTTP response状态码
1XX表示请求已成功接受,临时响应(消息)
2XX表示请求已成功接受(成功)
代表的有200表示请求成功接受并处理,请求所需的响应头或数据体随本条响应返回
3XX表示重定向,响应已接受但还需要进一步处理(重定向)
代表的有302,重定向到其他地址,浏览器将根据返回的数据体中的LOCATION重新发起对新的URL的请求;304,请求的内容已缓存,直接从缓存里读即可。
4XX表示客户端错误
代表的有400客户端请求有语法错误等,403客户端请求被接受但服务器拒绝响应,404请求URL地址错误
5XX表示服务器错误
代表的有500服务器发生不可预期的错误,503表示服务器暂时不接受请求稍后恢复。
5.HTTP 的HEAD
HEAD分为四大类,通用头(描述协议本事,比如CONNECTION等) 实体头(描述BODY内容) 请求头(请求独有) 响应头(响应头)
Request
CACHE 包括if-modified- since / if-none-match/(这两个都和304有关) /cache-control
CLIENT 包括ACCEPT ACCEPT-LANGUAGE ACCEPT-CHARSET ACCEPT-ENCODING USER-AGENT
COOKIE 很重要的头
ENTITY 包括CONTENT-LENGTH CONTENT-TYPE等
MISCELLANOUS 包括referer表示从哪里链接来的
TRANSPORT: 包括HOST和CONNECTION
Response
CACHE包括DATE EXPIRES VARY
COOKIE包括SET-COOKIE/P3P
ENTITY包括CONTENT-TYPE CONTENT-LENGTH CONTENT-ENCODING CONTENT-LANGUAGE等等(后两个是在REQUEST的CLIENT里)
MISCELLENOUS包括SERVER,服务器信息
LOCATION 重定向位置
TRANSPORT包括CONNECTION等