HTTP header 参数如何正确配置与使用?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 参数 正文

HTTP Header 是 HTTP 协议中非常重要的一部分,它位于 HTTP 请求和 HTTP 响应的起始行之后,和正文之前,它以 Key: Value 的形式成对出现,用于传递关于请求/响应本身、客户端、服务器以及所传输数据元信息。

https header 参数
(图片来源网络,侵删)

可以把 HTTP Header 想象成一封信的信封和信件内容旁边的备注,信封上的信息(寄信人、收信人、地址)Header,而信件正文就是 Body。


HTTP Header 的主要分类

为了更好地理解,我们可以将 HTTP Header 分为以下几大类:

通用头

这些头字段可以同时出现在请求和响应中,但它们与最终的报文正文无关。

  • Connection: 管理服务器与客户端之间的连接,Connection: keep-alive 表示持久连接,Connection: close 表示请求完成后关闭连接。
  • Date: 报文创建的日期和时间。
  • Transfer-Encoding: 指定报文主体的传输编码方式,Transfer-Encoding: chunked 用于分块传输。
  • Via: 显示报文经过的中间网关或代理服务器。

请求头

这些头字段只出现在 HTTP 请求中,包含了客户端(浏览器)的信息以及对服务器的请求要求。

https header 参数
(图片来源网络,侵删)
  • `Host (必需): 指定请求资源所在的主机名和端口号,HTTP/1.1 协议要求每个请求都必须包含此头。
    • 示例: Host: www.example.com
  • User-Agent: 标识发起请求的用户代理(通常是浏览器、爬虫或工具)的信息。
    • 示例: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
  • Accept: 告诉服务器客户端能够处理的内容类型(MIME Type),服务器会根据此头返回最合适的内容。
    • 示例: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
  • Accept-Language: 告诉服务器客户端偏好的自然语言。
    • 示例: Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
  • Accept-Encoding: 告诉服务器客户端支持的内容编码方式,如 gzip, deflate, br。
    • 示例: Accept-Encoding: gzip, deflate, br
  • Authorization: 包含用于认证的凭证,最常见的是用于 Basic 认证或 Bearer Token 认证。
    • 示例: Authorization: Bearer <your_token_here>
  • Cookie: 客户端将服务器之前设置的 Cookie 发送给服务器,用于维持会话状态。
    • 示例: Cookie: sessionid=123456; csrf_token=abcde
  • `Referer (注意是referrer的拼写错误): 表示请求的来源页面 URL。
    • 示例: Referer: https://www.google.com/
  • Content-Type: 请求正文的媒体类型(仅当有请求体时使用,如 POST, PUT 请求)。
    • 示例: Content-Type: application/json
  • Content-Length: 请求正文的字节长度(仅当有请求体时使用)。
    • 示例: Content-Length: 53

响应头

这些头字段只出现在 HTTP 响应中,包含了服务器的信息以及对客户端的响应要求。

  • Server: 标识服务器软件的名称和版本。
    • 示例: Server: Apache/2.4.1
  • Content-Type: 响应正文的媒体类型,告诉浏览器如何解析和显示返回的内容。
    • 示例: Content-Type: text/html; charset=UTF-8
  • Content-Length: 响应正文的字节长度。
    • 示例: Content-Length: 1270
  • Content-Encoding: 响应正文使用的压缩编码方式,如 gzip。
    • 示例: Content-Encoding: gzip
  • Set-Cookie: 服务器在客户端设置 Cookie,用于后续请求中维持状态。
    • 示例: Set-Cookie: sessionid=654321; Path=/; HttpOnly
  • Location: 用于重定向,配合 3xx 状态码使用,告诉客户端新的资源 URL。
    • 示例: Location: https://www.example.com/new-location
  • Cache-Control: 指定关于缓存机制的指令,如 no-cache, max-age=3600
    • 示例: Cache-Control: public, max-age=31536000
  • Expires: 响应过期的日期和时间,已被 Cache-Control 头部分取代。
    • 示例: Expires: Wed, 21 Oct 2025 07:28:00 GMT

实体头

这些头字段描述了请求或响应的正文内容,它们既可以出现在请求中,也可以出现在响应中,很多实体头现在被归类到了请求头和响应头中(如 Content-Type, Content-Length)。

  • Content-Language: 实体正文使用的自然语言。
  • Content-Location: 实体正文的替代位置。
  • Last-Modified: 资源最后一次被修改的日期和时间。

如何查看 HTTP Header?

在浏览器中查看

  • Chrome / Firefox / Edge:
    1. 打开开发者工具 (F12 或 Ctrl+Shift+I)。
    2. 切换到 Network (网络) 标签页。
    3. 刷新页面或执行一个操作,你会在列表中看到所有网络请求。
    4. 点击任意一个请求,在右侧的 Headers (标头) 标签页中,你可以看到完整的请求头和响应头。

使用命令行工具

  • curl: 这是一个非常强大的命令行工具。
    • 查看响应头:
      curl -I https://www.example.com
      # 或者
      curl --head https://www.example.com
    • 查看请求头和响应头:
      curl -v https://www.example.com
      # -v 表示 verbose (详细) 模式
    • 自定义请求头:
      curl -H "X-Custom-Header: my-value" -H "Accept: application/json" https://www.example.com

一个完整的 HTTP 请求示例

下面是一个从浏览器访问 https://www.example.com 的简化 HTTP 请求示例,其中包含了各种请求头:

GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Cookie: sessionid=123456; csrftoken=abc123

解析:

https header 参数
(图片来源网络,侵删)
  • GET / HTTP/1.1: 请求行,表示使用 HTTP/1.1 协议获取根路径 的资源。
  • Host: www.example.com: 请求的目标主机。
  • User-Agent: 告诉服务器我是 Chrome 浏览器。
  • Accept: 我能接收 HTML、XML、图片等格式的数据。
  • Accept-Language: 我优先使用中文,其次是英文。
  • Accept-Encoding: 我能接收 gzip、br 等压缩格式。
  • Connection: 希望保持连接,以便后续请求复用。
  • Cookie: 附带上之前登录的会话信息。

一个完整的 HTTP 响应示例

服务器收到请求后,可能会返回如下响应:

HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Wed, 21 Dec 2025 10:00:00 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 1270
Connection: keep-alive
Set-Cookie: csrftoken=xyz789; expires=Thu, 21 Dec 2025 10:00:00 GMT; HttpOnly; Path=/
Cache-Control: public, max-age=3600
Last-Modified: Tue, 20 Dec 2025 09:00:00 GMT
<!DOCTYPE html>
<html>
  <head>Example Domain</title>
  </head>
  <body>
    <p>This domain is for use in illustrative examples in documents.</p>
  </body>
</html>

解析:

  • HTTP/1.1 200 OK: 状态行,表示请求成功。
  • Server: 服务器使用的是 Nginx 1.18.0。
  • Date: 响应生成的时间。
  • Content-Type: 返回的是 HTML 文本,字符集为 UTF-8。
  • Content-Length: 返回的 HTML 正文长度为 1270 字节。
  • Connection: 保持连接。
  • Set-Cookie: 服务器在客户端设置了一个名为 csrftoken 的 Cookie,并设置了过期时间和安全属性。
  • Cache-Control: 建议将此响应缓存 3600 秒(1小时)。
  • Last-Modified: 这个 HTML 文件最后修改的时间。
  • 空行之后是实际的响应正文(HTML 代码)。

HTTP Header 是 HTTP 协议的“神经系统”,它承载了控制客户端与服务器之间交互的所有指令和元数据,理解常见的 Header 参数对于 Web 开发、调试、性能优化(缓存、压缩)、安全认证(CORS, Cookie)以及 API 设计都至关重要。

-- 展开阅读全文 --
头像
Latitude E7250拆机步骤是?
« 上一篇 02-06
智能音乐播放系统怎么用?
下一篇 » 02-06

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]