HTTP请求头和响应头详解
封面图
•
2025-12-03
•
互联网
294
0
0
0
HTTP(HyperText Transfer Protocol)请求和响应头是HTTP协议中用于在客户端与服务器之间传递元数据的部分。它们包含了许多关于请求或响应的元信息,例如内容类型、编码方式、缓存控制、认证信息等。 --- ## 一、HTTP 请求头(Request Headers) 请求头是客户端发送给服务器的头部信息,用于描述请求的属性和上下文。 ### 常见请求头: | 头字段 | 说明 | |--------|------| | `Host` | 指定请求的目标服务器的域名和端口号(必填) | | `User-Agent` | 客户端浏览器和操作系统信息 | | `Accept` | 客户端可以处理的内容类型(如 `text/html`, `application/json`) | | `Accept-Language` | 客户端接受的语言(如 `en-US`, `zh-CN`) | | `Accept-Encoding` | 客户端支持的编码方式(如 `gzip`, `deflate`) | | `Content-Type` | 请求体的MIME类型(如 `application/x-www-form-urlencoded`) | | `Content-Length` | 请求体的长度(字节数) | | `Authorization` | 身份验证信息(如 Basic Auth、Bearer Token) | | `Cookie` | 客户端发送的 Cookie 信息 | | `Referer` | 当前请求来源页面的 URL | | `Cache-Control` | 缓存控制指令(如 `no-cache`, `max-age=3600`) | | `Connection` | 控制连接的行为(如 `keep-alive`) | ### 示例: ```http GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 Accept: text/html,application/xhtml+xml Accept-Language: en-US,en;q=0.5 Authorization: Bearer <token> ``` --- ## 二、HTTP 响应头(Response Headers) 响应头是服务器返回给客户端的头部信息,用于描述响应的属性和内容。 ### 常见响应头: | 头字段 | 说明 | |--------|------| | `Status` / `HTTP-Version` | 响应状态码(如 `200 OK`) | | `Content-Type` | 响应体的MIME类型(如 `text/html`, `application/json`) | | `Content-Length` | 响应体的长度(字节数) | | `Content-Encoding` | 响应体的编码方式(如 `gzip`) | | `Set-Cookie` | 设置客户端的 Cookie | | `Location` | 重定向的URL(如 `302 Found`) | | `Cache-Control` | 缓存控制指令(如 `no-cache`, `public`) | | `Expires` | 响应过期时间(RFC 1123 格式) | | `Last-Modified` | 资源最后修改时间 | | `ETag` | 资源的唯一标识符 | | `Server` | 服务器软件名称和版本 | | `Date` | 响应生成的日期和时间 | | `Vary` | 告诉缓存系统根据哪些请求头来区分不同的响应 | ### 示例: ```http HTTP/1.1 200 OK Date: Mon, 25 Jul 2024 12:34:56 GMT Server: Apache/2.4.41 (Ubuntu) Content-Type: text/html; charset=UTF-8 Content-Length: 1234 Set-Cookie: session_id=abc123; HttpOnly Cache-Control: public, max-age=3600 ``` --- ## 三、通用头字段(General Headers) 这些头字段既可以在请求中使用,也可以在响应中使用。 | 头字段 | 说明 | |--------|------| | `Date` | 日期和时间 | | `Cache-Control` | 缓存控制 | | `Connection` | 连接管理 | | `Trailer` | 指出响应中包含的尾部字段 | | `Transfer-Encoding` | 传输编码方式(如 `chunked`) | --- ## 四、实体头(Entity Headers) 这些头字段描述了请求或响应的“实体”内容(即 body 部分)。 | 头字段 | 说明 | |--------|------| | `Content-Type` | 实体的MIME类型 | | `Content-Length` | 实体的长度 | | `Content-Encoding` | 实体的编码方式 | | `Content-Language` | 实体语言 | | `Content-Location` | 实体的URI | | `Content-MD5` | 实体的MD5校验和 | | `Content-Range` | 实体的一部分范围 | | `Last-Modified` | 实体最后修改时间 | --- ## 五、自定义头字段 开发者可以在请求或响应中添加自定义头字段,通常以 `X-` 开头(如 `X-Requested-With`),但并非强制。 示例: ```http X-Auth-Token: abc123 X-Client-ID: myapp ``` --- ## 六、常见状态码(响应状态码) | 状态码 | 说明 | |--------|------| | `200 OK` | 请求成功 | | `301 Moved Permanently` | 永久重定向 | | `302 Found` | 临时重定向 | | `401 Unauthorized` | 未授权 | | `403 Forbidden` | 禁止访问 | | `404 Not Found` | 资源不存在 | | `500 Internal Server Error` | 服务器内部错误 | --- ## 七、总结 | 类别 | 请求头 | 响应头 | |------|--------|--------| | 通用头 | ✅ | ✅ | | 实体头 | ✅ | ✅ | | 自定义头 | ✅ | ✅ | | 状态码 | ❌ | ✅ | --- 如果你有特定的场景或问题(如如何设置 Cookie、如何处理缓存、如何进行身份验证等),我可以提供更详细的解释。
上一篇:
什么是app-ads.txt?如何正确实施app-ads.txt文件?
下一篇:
BP神经网络算法
标题录入,一次不能超过6条
留言
评论