news 2026/4/16 12:01:04

带你探秘HTTP协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
带你探秘HTTP协议

HTTP 协议是后端开发中与前端(浏览器)打交道的“语言”。无论是使用原生的 Servlet 还是现在的 Spring Boot,底层的通信逻辑都离不开它。

🌐 JavaWeb 核心:HTTP 协议

1. 什么是 HTTP?

HTTP (Hyper Text Transfer Protocol),即超文本传输协议
它规定了浏览器(客户端)和服务器之间数据传输的规则。在 JavaWeb 开发中,我们编写的服务端程序本质上就是在接收 HTTP 请求并返回 HTTP 响应。

核心特点:

  1. 基于 TCP 协议:面向连接,数据传输安全可靠。
  2. 请求-响应模型:一次请求对应一次响应(由客户端主动发起)。
  3. 无状态:协议本身对事务处理没有记忆能力,每次请求-响应都是独立的。
  • 优点:速度快。
  • 缺点:多次请求间不能直接共享数据(后续你会通过Session/Cookie/Token来解决这个问题)。

2. HTTP 请求数据格式 (Request)

请求数据主要由三部分组成:

  1. 请求行:包含请求方式(GET/POST)、资源路径协议版本(如 HTTP/1.1)。
  2. 请求头:以 key: value 格式出现的辅助信息。
  • Host: 请求的主机名。
  • User-Agent: 浏览器标识(服务器通过它判断客户端类型)。
  • Accept: 浏览器能接收的资源类型(如 text/html, application/json)。
  • Content-Type:(重要)请求体的数据类型。 3.请求体:存放 POST 请求的参数数据。

🥊 GET vs POST 的区别

特性GETPOST
参数位置拼接在 URL 后面(请求行中)放在请求体中
数据大小有限制(受 URL 长度限制)理论上无限制
安全性较低(参数直接暴露在地址栏)相对较高

3. HTTP 响应数据格式 (Response)

响应数据同样分为三部分:

  1. 响应行:协议版本、状态码、状态码描述(如 HTTP/1.1 200 OK)。
  2. 响应头:服务器返回给浏览器的附加信息。
  • Content-Type: 告诉浏览器返回的数据是什么格式(如 image/png 或 text/html)。
  • Set-Cookie: 服务器向浏览器设置 Cookie。
  1. 响应体:服务器返回的真实数据(HTML 页面、图片、或JSON 数据)。

4. 重点:响应状态码 (Status Code)

状态码是服务器告诉浏览器“这次请求结果如何”的代号,主要分为五类:
| 类别 | 含义 | 常见代表 |
|1xx| 临时状态 | 正在处理中 |
|2xx|成功|200 (OK): 完美解决 |
|3xx|重定向|302 (Found): 临时跳转;304 (Not Modified): 命中缓存 |
|4xx|客户端错误|400 (Bad Request): 请求参数有误;404 (Not Found): 找不到资源 |
|5xx|服务端错误|500 (Internal Error): 后端 Java 代码抛异常了 |

状态码英文描述解释
200OK客户端请求成功,即处理成功,这是我们最想看到的状态码
302Found指示所请求的资源已移动到由 Location 响应头给定的 URL,浏览器会自动重新访问到这个页面
304Not Modified告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400Bad Request客户端请求有语法错误,不能被服务器所理解
403Forbidden服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
404Not Found请求资源不存在,一般是 URL 输入有误,或者网站资源被删除了
405Method Not Allowed请求方式有误,比如应该用 GET 请求方式的资源,用了 POST
428Precondition Required服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429Too Many Requests指示用户在给定时间内发送了太多请求(“限速”),配合 Retry-After (多长时间后可以请求) 响应头一起使用
431Request Header Fields Too Large请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
500Internal Server Error服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503Service Unavailable服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好

💡 学习建议

  1. 学会使用开发者工具:在 Chrome 浏览器按 F12 -> Network 选项卡,你可以实时看到每一个 Spring Boot 接口发出的请求头和响应体。
  2. 关注 Content-Type:在后续学习 Spring Boot 异步请求(Axios/AJAX)时,你会频繁处理 application/json 格式,它是目前前后端交互的主流。
  3. 状态码即口法:看到 404 找前端路径或资源名,看到 500 赶紧回 IDEA 看控制台日志。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:00:56

解决焊缝AI评片中常见问题

TOI Filter 区域过滤函数 通过标注焊缝区域并训练YOLOv11s模型,实现焊缝内外区域的划分。 import numpy as npdef toi_filter(detections, weld_region_mask, threshold0.7):"""过滤焊缝区域外的检测框Args:detections: List[Dict], 检测框信息(x1…

作者头像 李华
网站建设 2026/4/16 12:00:11

ESTUN工业机器人坐标系详解:从关节到工具的精准控制

1. 工业机器人坐标系基础概念 第一次接触ESTUN工业机器人时,最让我困惑的就是各种坐标系的概念。记得当时看着示教器上跳动的数字,完全不明白这些数字代表什么意义。直到有老师傅告诉我:"坐标系就是机器人的眼睛和尺子,没有它…

作者头像 李华
网站建设 2026/4/16 11:59:54

聊聊建设专业网站开发公司质价比天花板如何辨别?

大家好,我是老纪。最近几个月,我不是一直在科普网站开发的文章嘛,遇到几位粉丝后台私信我,他说现在想找个靠谱的专业网站开发公司,怎么就这么难?要么报价低得离谱,然后做出来的网站根本没法用&a…

作者头像 李华