ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## HTTP简介 HTTP是什么?它是干什么的?谁定义的?它包含什么?它有哪些规定?它... #### HTTP全名是**Hyper Text Transfer Protocol(超文本传输协议)** ``` 1. 是什么? ``` 是一个用于传输超媒体文档(例如 HTML)的[应用层](https://en.wikipedia.org/wiki/Application_Layer)**协议**。 **协议**?协议是什么鬼?某论坛 - 协议就是几个人一起商量制定的共同遵守的规范。哦...,就是唠出来的~ ``` 2. 是干什么的? ``` 是为 Web 浏览器与 Web 服务器之间的通信而设计的。 ``` 3. 谁定义的? ``` **HTTP(**HyperText Transfer Protocol)是万维网(World Wide Web)的基础协议。自 **Tim Berners-Lee 博士**和他的团队在1989-1991年间创造出来。 ``` 4. 那它进化了吗? ``` 答案是肯定的...而且属于超进化... > **HTTP/0.9 – 单行协议** > 请求由单行指令构成,以唯一可用方法[`GET`](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/GET "HTTP GET 方法请求指定的资源。使用 GET 的请求应该只用于获取数据。")开头,其后跟目标资源的路径。 > 请求:(一旦连接到服务器,协议、服务器、端口号这些都不是必须的)。 ~~~html GET /index.html ~~~ > 响应: 只包含响应文档本身。 ~~~html <HTML> 这是一个非常简单的HTML页面 </HTML> ~~~ > 跟后来的版本不同,HTTP/0.9 的响应内容并不包含HTTP头,这意味着只有HTML文件可以传送,无法传输其他类型的文件;也没有状态码或错误代码:一旦出现问题,一个特殊的包含问题描述信息的HTML文件将被返回,供人们查看。 ***** > **HTTP/1.0 – 构建可扩展性** * 协议版本信息现在会随着每个请求发送 * 状态码会在响应开始时发送,使浏览器能了解请求执行成功或失败,并相应调整行为 * 引入了HTTP头的概念,无论是对于请求还是响应,允许传输元数据,使协议变得非常灵活,更具扩展性。 * 在新HTTP头的帮助下,具备了传输除纯文本HTML文件以外其他类型文档的能力。[`Content-Type`](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Type "Content-Type 实体头部用于指示资源的MIME类型 media type 。") ***** > **HTTP/1.1 – 标准化的协议** > HTTP/1.0 多种不同的实现方式在实际运用中显得有些混乱,在1997年初,HTTP1.1 标准发布,就在HTTP/1.0 发布的几个月后。 * 连接可以复用,节省了多次打开TCP连接加载网页文档资源的时间。 * 增加流水线操作,允许在第一个应答被完全发送之前就发送第二个请求,以降低通信延迟。 * 支持响应分块。 * 引入额外的缓存控制机制。 * 引入内容协商机制,包括语言,编码,类型等,并允许客户端和服务器之间约定以最合适的内容进行交换。 * 能够使不同域名配置在同一个IP地址的服务器上。 > 由于HTTP协议的可扩展性 – 创建新的头部和方法是很容易的 – 即使HTTP/1.1协议进行过两次修订,[RFC 2616](https://tools.ietf.org/html/rfc2616)发布于1999年6月,而另外两个文档 [RFC 7230](https://tools.ietf.org/html/rfc7230)\-[RFC 7235](https://tools.ietf.org/html/rfc7235)发布于2014年6月,作为HTTP/2的预览版本。HTTP协议已经稳定使用超过了15年。 ***** > **HTTP/2 - 为了更优异的表现** * HTTP/2是二进制协议而不是文本协议。不再可读,也不可无障碍的手动创建,改善的优化技术现在可被实施。 * 这是一个复用协议。并行的请求能在同一个链接中处理,移除了HTTP/1.x中顺序和阻塞的约束。 * 压缩了headers。因为headers在一系列请求中常常是相似的,其移除了重复和传输重复数据的成本。 * 其允许服务器在客户端缓存中填充数据,通过一个叫服务器推送的机制来提前请求。 * 对Alt-Svc的支持允许了给定资源的位置和资源鉴定,允许了更智能的CDN缓冲机制。 * [`Client-Hints`](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Client-Hints "此页面仍未被本地化, 期待您的翻译!")的引入允许浏览器或者客户端来主动交流它的需求,或者是硬件约束的信息给服务端。 * 在Cookie头中引入安全相关的的前缀,现在帮助保证一个安全的cookie没被更改过。