HTTP的基本概念
HTTP是超文本传输协议,也就是HyperTextTransferProtocal.HTTP是在计算机世界里专门用于两点之间数据传输的约定和规范
什么是超文本?
HTTP传输的内容是超文本,他不是不同的文本,是文字图片视频等的混合体,关键是有超链接,能从一个超文本跳转到另外一个超文本。
HTML是最常见的超文本,内部用标签定义了图片,视频的链接,经过浏览器的解释,就能给我们展示一个完整的网页了。
总的来说,HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。
HTTP常见状态码
- 1xx:提示信息,标识目前是协议处理的中间状态,还需要后续的操作
- 2xx:成功,说明报文已经收到,并且被正确处理了
204:no content,响应头里面没有body数据
206:partial content ,用于HTTP分块下载或断点续传,标识相应返回的body数据并不是资源的全部,而是其中一部分,也是成功的处理
- 3xx:重定向,资源位置发生了变动,需要客户端重新发送请求。
301:表示永久重定向moved permantly,说明表示请求的资源永久不存在了
302:表示临时重定向,说明请求的资源还在,需要用另外一个URL访问
301,302都会在响应头里面使用Location字段,指明后续跳转的URL,浏览器会自动重定向到新的Url
304:not modified,不具有跳转的含义,表示资源没有被修改,重定向已经存在的缓冲文件,也叫缓冲重定向,告诉客户端可以继续使用缓存资源,用于缓存控制
- 4xx,客户端错误,请求报文错误,服务端无法处理
- 5xx:服务器错误
501表示客户端请求的功能不支持,类似即将开业,敬请期待的意思。
502是网关拦截
503表示服务器很忙,暂时无法相应客户端,类似网络很忙,请稍后重试的含义
HTTP的常见字段
HOST
该字段主要是为了区分,同一个ip的服务器下的不同网站,就算计算机底层知道了对方ip,但是不知道这个ip下解析的不同网站服务也不行
Content-Length
这个字段是为了告诉浏览器,本次服务器返回的数据长度。
HTTP是基于TCP传输协议进行通信,而使用TCP传输协议,就会存在一个粘包问题,HTTP协议通过设置回车符,换行符作为HTTPheader的边界,通过Content-Length字段作为HTTPbody的边界,为了解决粘包问题
Connection
Connection用于客户端要求服务器使用HTTP长连接的机制,以便其它请求复用
HTTP长连接的特点是,只要任意一端没有明确剔除断开连接,那么就会保持TCP的链接状态
Connection: Keep-Alive
开启Keep-Alive机制后,连接就不会中断,而是保持连接,当客户端发送另外一个请求的时候,会使用同一个连接,知道客户端或者提出断开连接
Content-Type
这个字段用于服务器回应客户端时候,告诉他自己能接收什么数据格式
Content-Encoding
说明数据的压缩方法,表示服务器返回数据用了什么压缩格式
同时也有Accept-Encoding和它接应