HTTP的Header

发布于:2025-04-23 ⋅ 阅读:(59) ⋅ 点赞:(0)

一、HTTP Header 是什么?

HTTP Header 是 HTTP 协议中的头部信息部分,位于请求或响应的起始行之后,用来在客户端(浏览器等)与服务器之间传递元信息(meta-data)(简单理解为传递信息的属性)

这些头信息可以指定:

  • 谁发送了请求(User-Agent

  • 期望返回什么格式(Accept

  • 要携带什么内容(Content-TypeContent-Length

  • 是否启用缓存(Cache-Control

  • 是否带有身份验证(Authorization


二、常见请求头字段解释

Header 名 说明
Host 指定服务器主机名(域名),比如:Host: www.example.com。HTTP/1.1 中是必须的。
User-Agent 客户端的软件标识(浏览器类型、版本、操作系统),用于服务端做适配。
Accept 告诉服务器客户端希望接收的响应数据格式,比如:text/htmlapplication/json
Accept-Encoding 支持的压缩格式,例如:gzip, deflate, br
Accept-Language 客户端可接受的语言,比如:zh-CN, en-US;q=0.8
Connection 控制连接是否保持,比如:keep-alive 表示连接复用,close 表示关闭。
Referer 当前请求的来源页面 URL,有利于防盗链、安全监测。
Cookie 携带之前服务器发送的 Cookie 数据(用于身份标识、状态保持等)。
Content-Type 请求体中的内容格式,例如:application/jsonapplication/x-www-form-urlencoded
Content-Length 请求体的长度(字节数),如上传文件或发送 JSON 时需要。
Authorization 鉴权用,通常是 Bearer tokenBasic base64编码


三、常见响应头字段解释

Header 名 说明
Content-Type 响应体的数据类型,比如:text/htmlapplication/json
Content-Length 响应体字节长度
Set-Cookie 服务器设置 Cookie 给客户端,用于后续请求识别身份
Cache-Control 控制缓存行为,如 no-cache, max-age=3600
Location 用于重定向,配合状态码 3xx,比如 Location: https://new.site.com
Server 表示服务器软件信息(如 Apache、nginx)
Date 响应生成时间
Access-Control-Allow-Origin 跨域请求时指定允许访问的来源(CORS)

四、重点说明

1.Host

作用:指明服务器的目标主机,此host并不是在网络上用于寻址,而是在目标服务器定位子服务器。服务器的 IP 地址可能是共享的(多个网站部署在一个服务器上),那么服务器就必须根据 Host 字段来区分到底要访问哪一个网站

2.Content-Type

用来指定Body的类型

类型 描述 举例
text/plain 纯文本 Hello World
text/html HTML 文件 <html><body>Hello</body></html>
application/json JSON 格式数据 {"name":"Tom", "age":20}
application/x-www-form-urlencoded 简单表单数据,使用url编码的方式将表单内容组织起来 name=Tom&age=20
multipart/form-data 用于上传文件(带文件表单) 表单中有图片、文件等
application/xml XML 格式数据 <user><name>Tom</name></user>
application/octet-stream 二进制流 下载文件或上传文件用

3.Content-Length 

指定Body的长度,单位是字节

4.Transfer-Encoding: chunked

表示 服务器采用“分块传输编码” 的方式,把响应内容一块一块(chunk)地传给客户端,而不是一次性告诉客户端总长度。

格式:

最后一块,长度是 0,表示传输结束

必须加上空行结束

5.Location
指定重定向的⽬标 URL
6.User-Agent
⽤户代理,即是谁实际发送请求、接受响应的,例如⼿机浏览器、某款⼿机 App
7.Range / Accept-Range
按范围取数据
Accept-Range: bytes 响应报⽂中出现,表示服务器⽀持按字节来取范围数据
Range: bytes=<start>-<end> 请求报⽂中出现,表示要取哪段数据
Content-Range:<start>-<end>/total 响应报⽂中出现,表示发送的是哪段
数据
作⽤:断点续传、多线程下载。