一.HTTP基本概念和用途
HTTP(超文本传输协议),他定义了客户端(浏览器)与服务器之间是如何的通信的,用以交换或传输超文本(像是HTML文档)
HTTP协议规定了客户端向浏览器发送请求,服务器收到客户端请求后进行处理并响应。
HTTP协议是一个无连接,无状态的协议,所以每次的请求都需要重新建立http连接,并且服务器不会保存客户端的信息
二.什么是url
我们常说的网址就是url
URI(Uniform Resource Identifier)和URL(Uniform Resource Locator)是两个容易混淆但又有区别的概念。以下是它们的具体区分:
1. 定义差异
-
URI(统一资源标识符)
- 示例:
urn:isbn:0451450523(这是一本书的URN标识符)
- 示例:
-
URL(统一资源定位符):是URI的一个子集,不仅标识资源,还提供访问该资源的具体位置和方法。url也是uri的一种
- 示例:
https://www.example.com/index.html(这是一个网页的具体访问地址)
- 示例:
2. 功能特点
-
URI可能包含:
- URN(统一资源名称):仅标识资源而不指定位置,如
urn:issn:0167-6423 - URL:既标识又定位资源
- URN(统一资源名称):仅标识资源而不指定位置,如
-
URL必须包含:
- 访问协议(如http/https/ftp)
- 主机地址(如www.example.com)
- 具体路径(如/index.html)
3. 结构对比
典型URL结构示例:
https://www.example.com:443/path/to/resource?query=string#fragment
\___/ \_____________/\__/\_______________/\_________/\________/
协议 主机 端口 路径 查询参数 片段标识
而URI的结构范围更广,可以是:
- 上述完整的URL
- 或简短的URN格式:
mailto:user@example.com
4. 实际应用场景
-
当需要精确访问网络资源时使用URL
-
当需要持久标识而不关心位置时使用URI:
三.HTTP各种常见的方法
GET
get用于请求url的指定资源,指定资源会经过服务器解析后返回响应内容
GET /index.html HTTP/1.1
POST
通常用来提交数据 传输实体的主体
POST /submit.cgi HTTP/1.1
put
用于传输文件 将文件保存在url指定的位置
PUT /example.html HTTP/1.1
head
类似与get获取报文资源,head不返回报文全部,只返回报头
delete
删除文件,与put作用相反
options
⽤于查询针对请求URL指定的资源支持的方法,也就是返回post,get等
四.HTTP的状态码
常见的HTTP状态码
1xx 信息类状态码
- 100 Continue:服务器已收到请求头,客户端应继续发送请求主体
- 101 Switching Protocols:服务器已理解客户端请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成请求
2xx 成功类状态码
- 200 OK:请求成功(GET请求的资源,POST/PUT/PATCH请求处理完成)
- 201 Created:请求已被实现,且新资源已被创建(常见于POST/PUT请求)
- 202 Accepted:服务器已接受请求,但尚未处理完成
- 204 No Content:服务器成功处理请求,但不需要返回任何实体内容
3xx 重定向类状态码
- 301 Moved Permanently:请求的资源已永久移动到新位置
- 302 Found:请求的资源临时从不同的URI响应请求
- 304 Not Modified:资源未被修改,可使用缓存的版本
- 307 Temporary Redirect:临时重定向,请求方法和请求体不变
4xx 客户端错误类状态码
- 400 Bad Request:请求语法错误,服务器无法理解
- 401 Unauthorized:请求需要用户认证
- 403 Forbidden:服务器理解请求但拒绝执行
- 404 Not Found:服务器找不到请求的资源
- 405 Method Not Allowed:请求方法被禁止
- 408 Request Timeout:服务器等待请求时超时
- 429 Too Many Requests:用户在给定的时间内发送了太多请求
5xx 服务器错误类状态码
- 500 Internal Server Error:服务器遇到意外情况无法完成请求
- 502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效响应
- 503 Service Unavailable:服务器暂时过载或维护中
- 504 Gateway Timeout:服务器作为网关或代理,未及时从上游服务器获取请求
五.HTTP协议的常见Header
Content-Type: 指定数据格式(如text/html)
• Content-Length: 表示请求/响应主体的字节长度
• Host: 指明请求的目标主机和端口号
• User-Agent: 提供客户端操作系统和浏览器版本信息
• Referer: 记录跳转到当前页面的来源地址
• Location: 配合3xx状态码使用,指示客户端重定向目标地址
• Cookie: 客户端存储机制,常用于会话(session)管理
connection报头
HTTP中的Connection字段是报文头部的重要组成部分,用于管理客户端与服务器之间的连接状态。
该字段的主要功能是控制持久连接,允许多个客户端请求共享同一个TCP连接。在完成请求响应后,连接不会立即断开,从而实现单个连接上的多次请求与响应交互。
版本差异:
- HTTP/1.1:默认采用持久连接机制。只要客户端和服务器未明确要求关闭连接,该连接就会保持开启状态,供后续请求复用。
- HTTP/1.0:默认使用非持久连接。如需启用持久连接功能,必须在请求头中显式添加"Connection: keep-alive"字段。
