HTTP小知识 | 青训营笔记
这是我参与「第五届青训营 」伴学笔记创作活动的的第14天。
HTTP (HyperText Transfer Protocol) 是一种通信协议,用于从Web服务器传输超文本到本地浏览器的标准。HTTP在前端开发中非常重要,因为它是Web应用程序的基础通信协议。
一、初识HTTP
当我们在从在浏览器地址栏输入url地址,再到最后看到渲染好的页面,这其中到底发生了什么?
【举手】我知道!我可是学过计网的(骄傲脸)
- 浏览器请求DNS服务器:浏览器通过DNS服务器解析URL中的域名到IP地址。
- 建立TCP连接:浏览器通过IP地址建立一个TCP连接,以向Web服务器发送HTTP请求。
- 发送HTTP请求:浏览器通过HTTP协议向Web服务器发送请求,请求包括请求方法、URL、请求头和请求体。
- 服务器响应请求:Web服务器接收到请求并通过HTTP协议向浏览器发送响应,响应包括响应代码、响应头和响应体。
- 浏览器渲染页面:浏览器根据响应体中的内容渲染页面,例如HTML、CSS和JavaScript。
- 页面加载完成:浏览器完成页面的渲染,最终呈现给用户一个完整的页面。
什么是HTTP
HTTP (HyperText Transfer Protocol) 是一种应用层协议,用于在Web浏览器和Web服务器之间传输数据。HTTP是通过TCP/IP协议进行通信的,并且是万维网(World Wide Web)的基础协议。
HTTP定义了如何发送请求和接收响应,以及如何描述Web页面的数据和内容。HTTP请求通常由浏览器发送,Web服务器进行响应。请求和响应通过网络传输,并遵循HTTP协议的格式和规则。
HTTP主要用于从Web服务器获取HTML页面,图像,视频等内容,并在浏览器中呈现这些内容。它也可以用于在Web服务器和Web浏览器之间发送和接收其他类型的数据,例如JSON或XML。
简而言之,HTTP是一种分布式系统(包括浏览器和Web服务器)之间进行数据通信的标准协议。
二、HTTP协议分析
报文分析
1. 请求方法method
| 方法名 | 描述 |
|---|---|
| GET | 请求一个指定资源的表示形式,使用GET请求应该只被用于获取数据 |
| POST | 用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用 |
| PUT | 用请求有效载荷替换目标资源的所有当前表示 |
| DELETE | 删除指定的资源 |
| HEAD | 请求一个与GET请求的响应相同的响应,但没有响应体 |
| CONNECT | 建立一个由目标资源标识的服务器的隧道 |
| OPTIONS | 用于描述目标资源的通信选项 |
| TRACE | 沿着到目标资源的路径执行一个消息环回测试 |
| PATCH | 用于对资源应用部分修改 |
2. 状态码(常见)
- 200 OK - 客户端请求成功
- 301 - 资源(网页等)被永久转移到其他URL
- 302 - 临时跳转
- 401 Unauthorized - 请求未经授权
- 404 - 请求资源不存在,可能是输入了错误的URL
- 500 - 服务器内部发生了不可预期的错误
- 504 Gateway TimeOut - 网关或者代理的服务器无法在规定的时间内获得想要的响应
3. RESTful API
RESTful API:一种API设计风格
4. 常用请求头
5. 常用响应头
6. 缓存
缓存使用流程:
7. cookie
Set-Cookie - response
发展
HTTP/2
HTTP/2:更快、更稳定、更简单
HTTP/2在传输数据方面的一些改进,如:
-
多路复用:HTTP/2可以在一个TCP连接中并行请求多个资源,从而提高效率。
-
服务器推送:HTTP/2允许服务器主动推送资源到客户端,而不需要等待客户端发起请求。
-
二进制协议:HTTP/2使用二进制协议,而不是HTTP/1.x中的文本协议。
-
压缩头字段:HTTP/2支持压缩请求和响应头字段,从而减小传输的数据大小。
特征:
- HTTP/2连接都是永久的,而且仅需要每个来源一个连接
- 流控制:阻止发送方向接收方发送大量数据的机制
- 服务器推送
HTTPS
HTTPS : Hypertext Transfer Protocol Secure 超文本传输安全协议。与HTTP不同,HTTPS通过使用加密技术来保护数据的完整性和私密性,防止数据在传输过程中被第三方窃取或篡改。
- 经过TSL/SSL加密
- 对称加密:加密和解密都是使用同一个密钥
- 非对称加密:加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)