HTTP
HTTP 协议结构
报文:通信的基本单位,包含起始行、头部字段和报文主体。
实体:报文主体中的实际数据及其元数据。
| 请求报文 | 响应报文 |
|---|---|
![]() |
![]() |
实体首部核心字段
Content-Type:定义实体的媒体(MIME)类型,决定了浏览器和服务器如何解析和处理传输的数据。大白话就是定义传输数据的类型。
- 文本类数据
- text/html:
- text/plain:
- application/javascript:
- 结构化数据
- applicationz/json:
- application/xml:
- 表单数据
- application/x-www-form-urlencoded: 默认的表单提交类型,数据以 key = value 格式编码
- multipart/form-data: 支持二进制数据(如文件上传)的分段传输格式
- 高级用法
- 自定义 MIME 类型:企业内部系统可使用私人命名空间,举例 Content-Type: application/vnd.company.invoice+json
同时,Content-Type 还可以定义数据的编码格式,比如 Content-Type: text/html; charset=UTF-8
- 自定义 MIME 类型:企业内部系统可使用私人命名空间,举例 Content-Type: application/vnd.company.invoice+json
非标准化首部字段
- X-Forwarded-For(XFF):格式为一个逗号分隔的 IP 地址列表,例如 X-Forwarded-For: client, proxy1, proxy2, ...
- 列表中最左边的第一个 IP 就是客户端的原始 IP,后续的 IP 是请求经过的每一级代理服务器 (如Nginx、F5等) 的地址
- Forwarded:官方标准,旨在代替 X-Forwarded-For,格式更丰富,但是不如 XFF 使用广泛;
- 最后获取 IP 的手段:
request.getRemoteAddr,获取到与服务器直接建立 TCP 连接的地址,如果请求经过了代理,这个地址将是最后一个代理服务器的IP,而不是客户端的真实IP。


浙公网安备 33010602011771号