15-8.【HTTP】常见 HTTP/HTTPS 请求头有哪些?请列举 5 个并说明用途。

3 阅读2分钟

在 Swift 开发中,你通常通过 URLRequestallHTTPHeaderFields 属性来观察或设置这些头部。它们就像是请求的“元数据”,定义了传输的规则和身份。

以下是 5 个最常用的 HTTP 请求头及其用途:

1. Content-Type (内容类型)

  • 用途:告诉服务器请求体(Body)中数据的媒体类型。

  • 常见值

    • application/json: 发送 JSON 数据(Swift 中最常用)。
    • multipart/form-data: 用于上传文件。
    • application/x-www-form-urlencoded: 传统的表单提交。
  • Swift 场景:如果你不设置这个头,很多后端框架(如 Spring, Gin)可能无法正确解析你通过 httpBody 发送的 JSON。


2. Authorization (身份验证)

  • 用途:用于携带证明客户端身份的凭证(如 Token)。

  • 常见值Bearer <Your_Token>

  • Swift 场景:在登录成功后,你会将获取到的 JWT(JSON Web Token)保存。之后的每个请求都需要在 Header 中加入此字段,否则服务器会返回 401 Unauthorized

    Swift

    request.setValue("Bearer (myToken)", forHTTPHeaderField: "Authorization")
    

3. User-Agent (用户代理)

  • 用途:标识发起请求的客户端软件信息(操作系统、应用版本等)。
  • 常见值MyApp/1.0 (iPhone; iOS 17.0; Scale/3.0)
  • Swift 场景:后端可以根据这个字段进行统计,或者针对不同版本的 App 返回不同的内容。默认情况下,URLSession 会生成一个标准的 User-Agent,但开发者通常会自定义它以便于日志分析。

4. Accept (接受类型)

  • 用途:告诉服务器客户端能够处理的内容类型(即客户端想接收什么样的数据)。
  • 常见值application/json, text/html, */*
  • Swift 场景:如果你的 API 同时支持返回 XML 和 JSON,通过设置 Accept: application/json,可以确保服务器返回你想要的数据格式。

5. Cache-Control (缓存控制)

  • 用途:指定请求和响应遵循的缓存机制。

  • 常见值

    • no-cache: 强制要求服务器验证。
    • max-age=3600: 告知客户端该资源在 3600 秒内是新鲜的。
  • Swift 场景:当你需要确保获取的是最新数据(例如余额查询)而非缓存数据时,可以在请求头中加入 no-cache


总结对照表

请求头核心作用开发关注点
Content-Type声明 发出去 的是什么格式不对会导致服务器 400 错误
Accept声明 想收回 的是什么决定了响应内容的协商
Authorization证明 我是谁涉及安全,通常配合 HTTPS 使用
User-Agent声明 我在哪用于埋点统计和兼容性判断
Host声明 去哪里区分同一 IP 下的不同虚拟主机