常见的HTTP 请求头

331 阅读3分钟

HTTP 请求头(HTTP request headers)是附加在 HTTP 请求中的键值对,用于向服务器传递关于客户端、请求本身以及所请求资源的额外信息。以下是一些常用的 HTTP 请求头及其功能说明:

通用头(General Headers)

  • Host:指定请求资源的主机和端口。对于虚拟主机非常重要。

    Host: www.example.com
    
  • User-Agent:标识发出请求的客户端应用程序(浏览器、爬虫等),通常包含客户端软件的名称和版本、操作系统、以及其他相关信息。

    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
    
  • Accept:指定客户端能够处理的内容类型,如 text/htmlapplication/json 等。服务器使用该信息来确定适当的响应内容类型。

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    
  • Accept-Language:指定客户端首选的语言,用于内容协商。

    Accept-Language: en-US,en;q=0.5
    
  • Accept-Encoding:指定客户端能够处理的内容编码(压缩算法),如 gzipdeflate

    Accept-Encoding: gzip, deflate, br
    
  • Connection:控制连接的处理方式。keep-alive表示客户端希望保持连接打开,以进行后续请求。

    Connection: keep-alive
    

请求头(Request Headers)

  • Authorization:包含用于验证客户端身份的凭据,通常用于携带令牌或基本身份验证信息。

    Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
    
  • Content-Type:指定请求体的媒体类型,通常用于 POSTPUT 请求。例如,提交表单数据时常用 application/x-www-form-urlencoded,提交 JSON 数据时常用 application/json

    Content-Type: application/json
    
  • Content-Length:指定请求体的字节长度。

    Content-Length: 348
    
  • Cookie:包含发送到服务器的所有 Cookie 信息。常用于会话管理和用户跟踪。

    Cookie: sessionId=abc123; username=john_doe
    

安全相关的头(Security Headers)

  • Referer(注意拼写):告诉服务器请求的来源页面 URL。服务器可以根据这个头部进行引用检查或统计分析。

    Referer: https://www.example.com/previous-page
    
  • Origin:标识发起跨域请求的来源。常用于 CORS 请求中,以确定请求的合法性。

    Origin: https://www.example.com
    

条件请求头(Conditional Headers)

  • If-Modified-Since:只有在指定日期之后修改过的资源才会被返回。用于缓存控制和条件请求。

    If-Modified-Since: Wed, 21 Oct 2020 07:28:00 GMT
    
  • If-None-Match:只有在 ETag 不匹配的情况下,服务器才会返回资源。用于缓存控制和条件请求。

    If-None-Match: "686897696a7c876b7e"
    

客户端提示头(Client Hints)

  • DNT(Do Not Track):表示用户是否不希望被追踪。1 表示用户不希望被追踪,0 表示用户允许追踪。

    DNT: 1
    
  • Upgrade-Insecure-Requests:指示客户端可以处理从 HTTP 升级到 HTTPS 的请求。

    Upgrade-Insecure-Requests: 1
    
  • Sec-Fetch-Site:指示请求的发起者是同源、跨站、同站还是无来源。

    Sec-Fetch-Site: same-origin
    
  • Sec-Fetch-Mode:指示请求的模式,如 navigateno-corscorssame-origin

    Sec-Fetch-Mode: navigate
    
  • Sec-Fetch-Dest:指示请求的目标,如 documentiframeimagestylescript

    Sec-Fetch-Dest: document
    

自定义头(Custom Headers)

开发者可以定义和使用自定义头部来传递特定应用需求的信息。自定义头通常以 X- 前缀开始(虽然这种命名方式已经逐渐被弃用):

X-Custom-Header: customValue

总结

HTTP 请求头在客户端和服务器之间传递关键信息,确保请求和响应的正确处理。了解这些常用请求头,有助于开发和调试 Web 应用,提高与服务器的交互效率和安全性。