目录
1.HTTP概念:
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于Web Browser(浏览器)到Web Server(服务器)进行数据交互的传输协议。
1. 客户端和服务器模型
- 客户端:通常是用户的Web浏览器,它发送HTTP请求到服务器。
- 服务器:通常是Web服务器,它接收HTTP请求并返回响应。
2. 请求-响应周期
- 请求:客户端发送到服务器的数据包,包含对资源的操作请求。
- 响应:服务器返回给客户端的数据包,包含请求的状态和可能的数据。
3. URL(统一资源定位符)
- 用于定位互联网上的资源,通常包含协议类型(如HTTP或HTTPS)、服务器地址、端口号、路径和查询参数。
4. 方法(HTTP Methods)
- 定义了对资源的操作类型,如GET(获取资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)等。
5. 状态码(HTTP Status Codes)
- 服务器返回的数字代码,指示请求的结果,如200(成功)、404(未找到)、500(服务器错误)等。
6. 报文(HTTP Messages)
- HTTP请求和响应的基本单位,包含起始行、头部字段和可选的消息体。
7. 头部字段(HTTP Headers)
- 提供关于请求或响应的额外信息,如内容类型(Content-Type)、内容长度(Content-Length)、缓存控制(Cache-Control)等。
8. 消息体(Message Body)
- HTTP请求或响应的可选部分,可以包含数据,如HTML页面、图片、JSON等。
9. 无状态(Stateless)
- HTTP协议本身是无状态的,意味着服务器不会保存关于客户端的任何信息。为了维持状态,通常会使用cookies或其他机制。
10. 安全性
- HTTP:不加密,数据可能被窃听。
- HTTPS:HTTP的安全版本,使用SSL/TLS加密,增加了数据传输的安全性。
11. 缓存(Caching)
- HTTP允许缓存响应,以便在未来请求相同资源时减少延迟和网络流量。
12. 版本
- HTTP/1.0:第一个广泛使用的版本,但有一些性能问题。
- HTTP/1.1:改进了HTTP/1.0,包括持久连接、虚拟主机支持等。
- HTTP/2:进一步优化性能,包括头部压缩、多路复用等。
- HTTP/3:基于QUIC协议,旨在解决TCP的一些问题,提高速度和安全性。
2.http协议3个特点:
-
简单性:
- HTTP协议的设计理念是简单易读,请求和响应的结构都是文本格式,这使得开发者可以轻松地阅读和编写。
- 协议的简单性也意味着它易于实现和使用,这也是HTTP能够快速普及的原因之一。
-
无状态性:
- HTTP协议本身是无状态的,这意味着每个请求都是独立的,服务器不会保存任何关于客户端之前请求的信息。
- 无状态性简化了服务器的设计,但同时也带来了一些问题,比如无法维持用户会话。为了解决这个问题,引入了cookies和session等机制来跟踪用户状态。
-
可扩展性:
- HTTP协议具有很好的可扩展性,它允许通过定义新的方法和头部字段来扩展其功能。
- 这种可扩展性使得HTTP能够适应互联网的快速发展,例如,引入了HTTP/2来提高性能,以及HTTP/3来进一步优化传输效率。
2. http协议格式:
请求消息(Request Message)

-
请求行(Request Line)
- 方法:如GET、POST、PUT、DELETE等,表明对资源的操作。
- URI:统一资源标识符,指明请求的资源。
- HTTP版本:如HTTP/1.1或HTTP/2。
-
请求头(Headers)
- 包含了一系列的键值对,如Host、User-Agent、Accept等,提供了关于客户端环境、请求的内容和通信选项等信息。
-
空行
- 请求头和消息体之间必须有一个空行,用于分隔头部和内容。
-
消息体(可选)
- 请求的参数或者发送的数据,如POST请求中的表单数据。
示例:
POST /form.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
field1=value1&field2=value2
响应消息(Response Message)

-
状态行(Status Line)
- HTTP版本:如HTTP/1.1。
- 状态码:如200表示成功,404表示未找到。
- 状态短语:如OK、Not Found等,提供状态码的文本描述。
-
响应头(Headers)
- 类似于请求头,包含了关于响应的信息,如Content-Type、Content-Length、Server等。
-
空行
- 响应头和响应体之间必须有一个空行。
-
响应体
- 服务器返回的资源内容,如HTML页面、图片等。
示例:
HTTP/1.1 200 OK
Date: Tue, 15 Nov 2022 08:12:31 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html; charset=UTF-8
Content-Length: 126
<html>
<head>
<title>Example Page</title>
</head>
<body>
Hello, World!
</body>
</html>
3.GET方法和POST方法的区别?
用途
- GET:通常用于请求获取服务器上的资源。它应该是安全的和幂等的,意味着它不会改变资源的状态。
- POST:通常用于向服务器提交数据,例如提交表单数据或者上传文件。它通常不是安全的也不是幂等的,可以改变资源的状态。
2. 数据传输方式
- GET:将请求的数据附加在URL之后,以查询字符串的形式发送。
- POST:将请求的数据放置在HTTP请求的消息体(body)中发送。
3. 数据大小
- GET:由于URL长度限制,传输的数据量有限。
- POST:可以传输大量数据,理论上不受限制,但实际上可能会受到服务器配置的限制。
4. 安全性
- GET:数据在URL中可见,因此不适合传输敏感信息,如密码。
- POST:数据不会出现在URL中,更适合传输敏感信息。
5. 缓存和历史记录
- GET:请求的URL可以被浏览器缓存,并且会保存在浏览器的历史记录中。
- POST:不会被浏览器缓存,通常不会保存在浏览器的历史记录中。
6. 幂等性
- GET:幂等的,多次执行相同的GET请求,资源的状态不会改变。
- POST:不是幂等的,多次执行相同的POST请求可能会多次创建或修改资源。
7. 可缓存性
- GET:可以被缓存,因为它是幂等的。
- POST:通常不会被缓存。
8. 书签和分享
- GET:请求的URL可以被书签收藏或分享。
- POST:通常不能被书签收藏或分享。
9. 编码类型
- GET:只能进行URL编码。
- POST:支持多种编码类型,可以处理更复杂的数据类型,如二进制数据。
10. 应用场景
- GET:适用于查询数据,如搜索请求。
- POST:适用于提交数据,如表单提交。
HTTP协议概念、特点及GET与POST区别
1126

被折叠的 条评论
为什么被折叠?



