计算机网络笔记
常见的 HTTP 状态码有哪些?
HTTP 状态码为三位,主要分为五大类
- 1xx:初步响应。表示服务器接收到了初步的请求,可以继续请求,101 比如服务器同意升级协议,比如 HTTP TO WebSocket
- 2xx:表示请求成功,比如 201 表示资源创建完成,204 表示请求成功但是没有响应体
- 3xx:表示资源重定向:301 表示资源永久搬家,浏览器会记住新地址,302 表示临时搬家,资源还会再回来的,304 表示资源不变,调用本地缓存就行
- 4xx:客户端错误:比如 400 表示请求格式错误,401 表示没有登录或者 Token 过期,403 表示没有权限访问,比如普通用户访问管理员接口被打回来,404 表示资源没有被访问到
- 5xx:通常为服务器问题,500 表示服务器代码异常,比如 NULL 或者 SQL 链接错误等,502 表示网关拿到了无效响应,上游服务器挂了或者是格式不对,503 表示服务不可用,比如流量太大给服务器打掉了,504 上游服务超时了
HTTP 请求包含哪些内容,请求头和请求体有哪些类型?
首先,HTTP 请求包含请求行,请求头,请求体
- 请求行:包含请求方式,请求路径,请求协议,就是在浏览器上面看到的文本
- 请求头:包含一系列键值对,告诉服务器我是谁,浏览器版号,操作系统,或者一些本地验证信息
- 请求体:包含要提交给服务器的信息,
请求头和请求体之间用一个空行隔开,用于标记
请求头:
- 通用头部:请求和响应都可以使用,Cache-Control 控制缓存、Connection 控制连接是否保持
- 请求头部:用于请求,比如 Host 指定目标主机、User-Agent 标识客户端、Accept 告诉服务器想要什么格式、Authorization 带认证信息
- 实体头部:用于描述请求,比如请求的格式,请求体的大小
请求体格式:
- application/x-www-form-urlencoded:表单格式,最传统的格式,数据被编译成为:key=value 的形式
- multipart/form-data:上传文件使用的格式,数据使用分解符做分割
- application/json:JSON 格式,最常用的请求体格式
- text/plain:纯文本,很少用
- application/xml:XML,很少用
请求方法有什么?什么意思?
- GET:用于获取资源,幂等,不应该对服务器的数据造成更改,不应因为 GEt 操作影响后续 GET 操作
- POST:用于提交数据,不是幂等,可以对服务器资源造成影响
- PUT:更新资源,幂等,可以对服务器资源造成影响
- DELETE:删除资源,幂等,可以对服务器资源产生影响
- PATCH:局部更新资源,只更新传入的字段,而不是整体的字段
- HEAD:像 GET 一样请求数据,但是没有响应体,只有响应头,可以查看返回的数据的大小之类的元数据
- OPTIONS:用于检查服务器的这个接口支持什么请求方法
HTTP 中 GET 和 POST 的区别是什么?
语义不同:GET 的语义是请求数据,不影响服务器数据,请求一百次还是一样的,POST 的语义是提交数据,服务器会根据数据去更新,每一次都会创建新的记录
参数传递不同:GET 没有请求体,因此会将参数拼接到 URL 上面,大小会被限制,会被日志记录下来,所以敏感信息最好不用 GET 提交,POST 方式有请求体,提交数据一般放在请求体中(虽然也可以放在 URL 中),适合更大的数据,而且不会被日志记录,所以更加安全,但是还是是明文记录的,真安全还是靠 HTTPS
幂等不同:按照规范,GET 请求应该是幂等的,POST 不用做幂等,但是这个规矩是死的,人是活的,具体开发还是看代码怎么写了
缓存机制:因为 GET 是幂等的,浏览器会主动缓存 GET 产生的数据,而 POST 不会去缓存,每次都会去打服务器
最后更新时间:2026/3/26