当前位置: 首页 > news >正文

http相关整理

一、http请求结构

http一般包含这几个部分:

请求行(Request Line)
请求头(Request Headers)
空行(Blank Line)
请求体(Request Body)

1、请求行(Request Line)

请求行是HTTP请求的第一行,包含三个内容:

请求方法 请求路径 HTTP版本

例如:

GET /index.html HTTP/1.1

含义:

部分说明
GET请求方法
/index.html请求资源路径
HTTP/1.1HTTP协议版本

常见请求方法:

  • GET

  • POST

  • PUT

  • DELETE

  • PATCH

  • OPTIONS

  • HEAD

2、请求头(Request Headers)

请求头用于描述客户端信息和请求相关信息,由多行key:value组成。


例如:

Host: www.example.com
User-Agent: Chrome/120
Accept: application/json
Content-Type: application/json
Cookie: sessionId=123456

常见请求头:

请求头作用
Host请求的服务器地址
User-Agent浏览器类型
Accept可接受的数据类型
Content-Type请求体数据类型
Content-Length请求体长度
Cookie携带的Cookie
Authorization认证信息
3、空行(Blank Line)

请求头结束后会有一行空行
作用是:分隔请求头和请求体
HTTP 协议通过这一个空行来判断Header结束

4、请求体(Request Body)

请求体是真正提交给服务器的数据
只有部分请求方法才会有请求体,例如:

  • POST

  • PUT

  • PATCH

GET 一般没有请求体。

常见请求体格式:

1 表单

application/x-www-form-urlencoded

示例:

username=tom&password=123


2 JSON

application/json

示例:

{
"username": "tom",
"password": "123"
}


3 文件上传

multipart/form-data

用于:

  • 上传图片

  • 上传文件

5、完整 HTTP 请求示例

POST /login HTTP/1.1
Host: www.example.com
User-Agent: Chrome
Content-Type: application/json
Content-Length: 45

{
"username":"tom",
"password":"123456"
}

结构解析:

POST /login HTTP/1.1 ← 请求行 Host: www.example.com ← 请求头 User-Agent: Chrome ← 请求头 Content-Type: application/json Content-Length: 45 ← 空行 { ← 请求体 "username":"tom", "password":"123456" }

二、http响应结构

HTTP响应(HTTP Response)是服务器返回给客户端(浏览器)的数据。
它的结构和 HTTP 请求类似,也由四个部分组成

状态行(Status Line)
响应头(Response Headers)
空行(Blank Line)
响应体(Response Body)

1、状态行(Status Line)

状态行是 HTTP响应的第一行,包含三个内容:

HTTP版本 状态码 状态描述

例如:

HTTP/1.1 200 OK

含义:

部分含义
HTTP/1.1HTTP协议版本
200状态码
OK状态描述

常见状态码分为五类:

类型含义
1xx信息响应
2xx成功
3xx重定向
4xx客户端错误
5xx服务器错误

常见状态码:

状态码含义
200请求成功
201创建成功
204无内容
301永久重定向
302临时重定向
304资源未修改(缓存)
400请求错误
401未认证
403禁止访问
404资源不存在
500服务器内部错误
502网关错误
503服务不可用
2、响应头(Response Headers)

响应头用于描述服务器返回的数据和服务器信息
格式:

Header-Name: value

例如:

Content-Type: application/json
Content-Length: 120
Server: nginx
Set-Cookie: sessionId=abc123
Cache-Control: max-age=3600

常见响应头:

1 Content-Type:表示返回的数据类型。
例如:

Content-Type: text/html
Content-Type: application/json
Content-Type: image/png

常见类型:

类型说明
text/htmlHTML页面
application/jsonJSON数据
text/plain普通文本
image/png图片
application/pdfPDF文件

2 Content-Length:表示响应体的长度(字节数)。
例如:

Content-Length: 348

3 Server:服务器软件信息。
例如:

Server: nginx
Server: Apache
Server: Tomcat


4 Set-Cookie:服务器向浏览器设置 Cookie。
例如:

Set-Cookie: sessionId=abc123; Path=/; HttpOnly

浏览器以后请求会携带:

Cookie: sessionId=abc123


5 Cache-Control:控制缓存策略。
例如:

Cache-Control: no-cache
Cache-Control: max-age=3600

含义:

含义
no-cache每次都要验证
no-store不缓存
max-age=3600缓存3600秒

6 Location:用于 重定向。
例如:

HTTP/1.1 302 Found
Location: https://example.com/login

浏览器会跳转到新的地址。

7 Content-Encoding:表示响应是否压缩。
例如:

Content-Encoding: gzip

浏览器会自动解压。

3、空行(Blank Line)

响应头结束后会有一行空行,作用:分隔响应头和响应体。

HTTP 协议通过这行空行判断Header结束

4、响应体(Response Body)

响应体是服务器真正返回的数据
可能是:

1 HTML页面

Content-Type: text/html

例如:

<html>
<head>
<title>Hello</title>
</head>
<body>
Hello World
</body>
</html>

2 JSON数据(接口返回)

Content-Type: application/json

例如:

{
"code": 200,
"msg": "success",
"data": {
"id": 1,
"name": "Tom"
}
}


3 文件

例如下载:

  • PDF

  • Excel

  • 图片

  • ZIP

响应头通常包含:

Content-Type: application/pdf
Content-Disposition: attachment; filename=test.pdf

之前做的Java 文件下载接口就是返回这种响应。

5、完整 HTTP 响应示例

服务器返回:

HTTP/1.1 200 OK
Server: nginx
Content-Type: application/json
Content-Length: 58
Set-Cookie: sessionId=abc123

{
"code": 200,
"msg": "success",
"data": {}
}

结构解析:

HTTP/1.1 200 OK ← 状态行
Server: nginx ← 响应头
Content-Type: application/json
Content-Length: 58
Set-Cookie: sessionId=abc123
← 空行
{ ← 响应体
"code":200,
"msg":"success"
}

三、http是如何传输数据的

1、HTTP传输的本质:字节流

在网络中传输的数据其实是:Byte Stream(字节流)

HTTP报文在网络里其实是这样的:

01001000 01010100 01010100 01010000 ...

无论是:

  • HTML

  • JSON

  • 图片

  • 视频

  • PDF

  • Excel

最后都会变成:

byte[]

然后通过TCP协议发送。

http://www.jsqmd.com/news/476133/

相关文章:

  • 千问3.5-27B惊艳效果:对漫画分镜图进行剧情推演与角色关系图谱生成
  • 【立创开发板】GameStation-YunQy:基于梁山派打造NES掌机的硬件设计与模拟器移植实战
  • 破局与重生:Anthropic 团队内部实战——如何用 Claude Code 重构研发效率全流程
  • Qwen3-0.6B-FP8多轮对话能力实战:构建连贯的聊天机器人
  • STC8H8K64U工业光耦I/O板:高隔离数字信号采集与驱动设计
  • 使用快马平台AI快速生成React+Node.js博客源码,十分钟搭建可运行原型
  • gorm 如何获取ColumnType
  • Win11Debloat系统优化工具:高效深度清理Windows冗余的安全方案
  • AWPortrait-Z在网络安全领域的创新应用:基于AI的人像识别系统
  • DeEAR部署避坑指南:PyTorch 2.9+Transformers 5.3兼容性问题解决方案
  • DeEAR语音情感识别部署案例:为视障用户开发语音反馈情感适配器(高自然度优先响应)
  • [特殊字符] 龍魂AI算法知识库·完整交付总览
  • 基于无服务器托管平台的银行凭证窃取攻击与防御研究
  • Alpamayo-R1-10B行业应用:物流车队自动泊车指令理解与轨迹生成案例
  • 造相-Z-Image-Turbo在AIGC内容创作中的应用:自动化生成社交媒体配图
  • Leather Dress Collection 结合Vue3:打造现代化AI应用管理后台
  • 寻音捉影·侠客行政务应用:政策宣讲音频中实时捕获‘补贴’‘申报’等要点
  • .NET集成GLM-4-9B-Chat-1M:企业级AI应用开发指南
  • 手柄控制PC完全指南:用游戏手柄实现键盘鼠标模拟的零配置方案
  • Phi-4-reasoning-vision-15B步骤详解:从外网访问异常排查到内网验证
  • Signal即时通讯平台钓鱼攻击机制与端到端加密环境下的防御重构
  • PX4-Autopilot悬停控制核心技术解析与实战优化
  • AIGlasses_for_navigation质量保障:软件测试方法论在导航系统中的实践
  • GLM-OCR惊艳效果展示:复杂版式文档端到端识别,支持中英混排与数学符号
  • Qwen3-Embedding-4B实时推荐系统:用户兴趣向量化部署案例
  • Win11 21H2最终版ISO系统映像下载,体验接近Win10!(完整无精简、多合一版、64位、简/繁/英版本、22000.3260)
  • SPIRAN ART SUMMONER图像生成与AI Agent技术:智能创作助手开发
  • RMBG-2.0性能实测报告:1024x1024图像抠图仅需0.32s(RTX4090)
  • ChatTTS微调训练实战:从数据准备到模型优化的效率提升指南
  • cv_unet_image-colorization技术解析:Lab色彩空间映射与细节保留机制