HTTP请求头详解

这里以访问百度的首页www.baidu.com的请求头为例:

示例

GET / HTTP/1.1

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6

Cache-Control: max-age=0

Connection: keep-alive

Cookie: BIDUPSID=6899CC7691EF10CB14D7498300359F64; PSTM=1704163348; BD_UPN=12314753; BAIDUID=0CB88986D2E66DCBBDF05DA2F959CBDE:FG=1; ispeed_lsm=2; H_PS_PSSID=39999_40043_40074; H_WISE_SIDS=39999_40043_40074; BDUSS=FCN1RUS3AwaHM0NHI1SGZoYlJxaDlqMGFYN3ZjYk1jaHpTNkNBZS1aSmZScjlsSVFBQUFBJCQAAAAAAAAAAAEAAABY2FbbzOzDwMrHsru6z7eoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF-5l2VfuZdlY3; BDUSS_BFESS=FCN1RUS3AwaHM0NHI1SGZoYlJxaDlqMGFYN3ZjYk1jaHpTNkNBZS1aSmZScjlsSVFBQUFBJCQAAAAAAAAAAAEAAABY2FbbzOzDwMrHsru6z7eoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF-5l2VfuZdlY3; MCITY=-48%3A218%3A340%3A; BDSFRCVID=jQAOJexroG3EM1vqwXyRUrN1GeKK0gOTDYrEOwXPsp3LGJLVFYRFEG0PtOfWvoA-oxnGogKK3gOTH4PF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF=JRkJoD0MtKvDqTrP-trf5DCShUFs3-riB2Q-XPoO3KJMjbnnKJJibM4AK4ID0boUBGRGoMbgy4op8P3y0bb2DUA1y4vp0t53ymTxoUJ25JbReD5eqJubyx0ebPRiJ-b9Qg-JbpQ7tt5W8ncFbT7l5hKpbt-q0x-jLTnhVn0MBCK0hD0wD60BD6PVKgTa54cbb4o2WbCQ-x-M8pcN2b5oQTtkXHQqbRbvbjcPQquh3b5vOIJTXpOUWJDkXpJvQnJjt2JxaqRC3fTCsl5jDh3MXPKi5xnCe4ROaevy0hvctb3cShPm0MjrDRLbXU6BK5vPbNcZ0l8K3l02V-bIe-t2XjQhjHtJJj-jtb3aQ5rtKRTffjrnhPF35Pb3XP6-hnjy3bRJBnnJ-43i8hbaKxIaQn_iXJ3GJh3Ry6r42-39LPO2hpRjyxv4Q4KJWtoxJpOJ5DnU0C5gH4IbOlbvbURvDP-g3-AJQU5dtjTO2bc_5KnlfMQ_bf--QfbQ0hOhqP-jBRIEoC0XtDtBhCvPKITD-tFO5eT22-us2H6C2hcHMPoosIOHXjQ-KJ-R2J5PbfCD3KTiaKJjBMbUotoHXnJi0btQDPvxBf7p3H5NKq5TtUJM8nQ554nNqt4bh4JyKMnitKv9-pP2LpQrh459XP68bTkA5bjZKxtq3mkjbPbDfn028DKuDjtBD6O-DGRabK6aKC5bL6rJabC3jxjqXU6q2bDeQNb4W6oq-6vvXxoG-quasn5oyT3JXp0vWq54WbbvLT7johRTWqR4sxT-QxonDh83XUjU-tRCHCOOWq3O5hvvhn3O3MAM0MKmDloOW-TB5bbPLUQF5l8-sq0x0bOte-bQXH_E5bj2qRuJ_IbP; BA_HECTOR=2k24ag8400252k0k0l81a0algk9i991ippuf01s; delPer=0; BD_CK_SAM=1; PSINO=7; ZFY=3e:A7BJSzcivr8VcCKwCzk4UfljYI8dxFft6osNDEHlE:C; BAIDUID_BFESS=0CB88986D2E66DCBBDF05DA2F959CBDE:FG=1; BDSFRCVID_BFESS=jQAOJexroG3EM1vqwXyRUrN1GeKK0gOTDYrEOwXPsp3LGJLVFYRFEG0PtOfWvoA-oxnGogKK3gOTH4PF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF_BFESS=JRkJoD0MtKvDqTrP-trf5DCShUFs3-riB2Q-XPoO3KJMjbnnKJJibM4AK4ID0boUBGRGoMbgy4op8P3y0bb2DUA1y4vp0t53ymTxoUJ25JbReD5eqJubyx0ebPRiJ-b9Qg-JbpQ7tt5W8ncFbT7l5hKpbt-q0x-jLTnhVn0MBCK0hD0wD60BD6PVKgTa54cbb4o2WbCQ-x-M8pcN2b5oQTtkXHQqbRbvbjcPQquh3b5vOIJTXpOUWJDkXpJvQnJjt2JxaqRC3fTCsl5jDh3MXPKi5xnCe4ROaevy0hvctb3cShPm0MjrDRLbXU6BK5vPbNcZ0l8K3l02V-bIe-t2XjQhjHtJJj-jtb3aQ5rtKRTffjrnhPF35Pb3XP6-hnjy3bRJBnnJ-43i8hbaKxIaQn_iXJ3GJh3Ry6r42-39LPO2hpRjyxv4Q4KJWtoxJpOJ5DnU0C5gH4IbOlbvbURvDP-g3-AJQU5dtjTO2bc_5KnlfMQ_bf--QfbQ0hOhqP-jBRIEoC0XtDtBhCvPKITD-tFO5eT22-us2H6C2hcHMPoosIOHXjQ-KJ-R2J5PbfCD3KTiaKJjBMbUotoHXnJi0btQDPvxBf7p3H5NKq5TtUJM8nQ554nNqt4bh4JyKMnitKv9-pP2LpQrh459XP68bTkA5bjZKxtq3mkjbPbDfn028DKuDjtBD6O-DGRabK6aKC5bL6rJabC3jxjqXU6q2bDeQNb4W6oq-6vvXxoG-quasn5oyT3JXp0vWq54WbbvLT7johRTWqR4sxT-QxonDh83XUjU-tRCHCOOWq3O5hvvhn3O3MAM0MKmDloOW-TB5bbPLUQF5l8-sq0x0bOte-bQXH_E5bj2qRuJ_IbP; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; H_PS_645EC=d6cb8lSnAf4XlAgjMt7pgy4VPcjS9bl%2BB38ka8bX1KTxJhZ2EXI6PKFtrlK%2B33ou0jYD; COOKIE_SESSION=4988_0_9_9_13_20_1_0_4_7_1_6_4987_0_2_0_1704792081_0_1704792079%7C9%23282693_10_1704701011%7C4; ab_sr=1.0.1_NzZjMDE0OWJlODA5MGQ4M2RmMDU2Y2MyOWIzNWZjMmNiMTE1MDc0NTdjODg0ZjJhNWFjOTQzOGQ0MzRkZjE0MzAyMzQ2YzMxNDBhYzBiNGUyODM5OGEzOGFiNzZkMTUwNTg0ZjE1MWFiYmI1NjMzYWEyYTdjYjYwNzMxYmJiMzJkNjVkYzMyMWJhODZmN2EzMWFjMjY5ZWU1MTM2ZTEyZg==; BDRCVFR[dnzIuRC5RN0]=P017qenIq8TIh-snHmvQhPEUf

Host: www.baidu.com

Sec-Fetch-Dest: document

Sec-Fetch-Mode: navigate

Sec-Fetch-Site: none

Sec-Fetch-User: ?1

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0

sec-ch-ua: "Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"

sec-ch-ua-mobile: ?0

sec-ch-ua-platform: "Windows"

Accept

  • 指定客户端能够处理的内容类型范围,告诉服务器客户端希望接收的数据格式优先级

  • 例:Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7

  1. 客户端首选接收HTML格式的内容作为响应。

  2. application/xhtml+xml

    • 其次,如果服务器支持,客户端愿意接受XHTML格式的文档。

  3. application/xml;q=0.9

    • 第三选择是XML格式的数据,但其相对质量因子(q-value)为0.9,表示相比前两者优先级稍低。

  4. image/webp

    • 在图像资源方面,客户端首先偏好接收WebP格式的图片。

  5. image/apng

    • 其次,客户端也愿意接收APNG(Animated Portable Network Graphics)格式的动态图像。

  6. */*;q=0.8

    • 这个通配符表示客户端还能接受任何类型的非特定资源,并且对该类资源的整体优先级设置为0.8。这意味着除了前面列出的特定类型之外,其他所有MIME类型都可被接受,但优先级低于前面列举的格式。

  7. application/signed-exchange;v=b3;q=0.7

    • 客户端还可以处理Signed HTTP Exchanges(SXG),这是一种能够安全地在多个网站间传递和展示HTTPS内容的技术标准,版本号为b3,它的优先级相对较低,q值为0.7。

Accept-Encoding

  • 列出客户端可以解码的数据编码方式,会根据优先级顺序考虑这些压缩算法的任意一种来压缩内容,并在响应头中通过Content-Encoding字段告知客户端实际使用的压缩方式

  • 例:Accept-Encoding:gzip, deflate, br

  • gzip: Gzip是一种流行的文件压缩格式和算法,广泛应用于HTTP协议中以减少网络传输的数据量。当服务器支持并接收到这个值时,它可以在发送响应内容之前使用gzip对其进行压缩,然后客户端在接收到数据后解压缩内容。

  • deflate: Deflate也是一种数据压缩格式,是zlib库中定义的一种压缩方法。虽然与gzip相似,但deflate通常不包含头部信息,并且其压缩效率可能略低于gzip。现代浏览器一般也支持deflate压缩。

  • br: Brotli(或简称br)是一种较新的无损数据压缩格式,由Google开发并在2015年发布。相较于gzip和deflate,Brotli提供了更高的压缩比,从而能够进一步减少网络传输的数据量。然而,不是所有的服务器都支持Brotli压缩,而支持它的客户端则会声明它们可以处理这种编码。

Accept-Language

  • 指示客户端期望的语言种类顺序

  • 例:Accept-Language:zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6

  1. zh-CN

    • 客户端首选的语言是简体中文(Chinese Simplified),即中国的中文版本。

  2. zh;q=0.9

    • 如果服务器不能提供“zh-CN”这个特定的区域化语言,那么客户端愿意接受任何中文版本的内容,并且给予其优先级为0.9。这里的“zh”代表的是所有中文(不区分地区)。

  3. en;q=0.8

    • 在无法提供中文内容的情况下,客户端接下来会选择英语(English),并赋予它0.8的优先级。

  4. en-GB;q=0.7

    • 若英语资源也难以提供,客户端会偏好使用英国英语(English, Great Britain),其优先级为0.7。

  5. en-US;q=0.6

    • 最后,在以上三种语言都无法满足的情况下,客户端会接受美国英语(English, United States),该选项的优先级为0.6。

Cache-Control

  • 控制缓存策略的指令集,指导中间缓存(包括浏览器缓存)如何处理响应内容

  • 例:Cache-Control:max-age=3600(表示缓存一小时)或Cache-Control:no-cache

Connection

  • 定义客户端与服务器之间连接管理的方式,如保持连接或关闭连接,如果为keep-alive,表示希望复用TCP连接;如果是close,则请求完成后关闭连接

  • 例:Connection: keep-alive 或 Connection: close

Cookie

  • 传递客户端存储的服务器设置的Cookies,可以维持会话状态,实现用户个性化服务等功能

  • 例:Cookie:token=xxx;session_id=xxx

Host

  • 指明请求的主机,让服务器知道客户端请求的是哪个域名下的资源

  • 例:hpd.baidu.com

User-Agent

  • 标识发起请求的用户代理软件的信息

  • 例:User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0

  1. Mozilla/5.0

    • 这是很多现代浏览器为了兼容性目的而继承自Netscape Navigator的标识符。尽管这不是Mozilla Firefox浏览器,但许多其他浏览器(包括Chrome和Edge)仍然在User-Agent中包含这一串字符以表明它们遵循Mozilla的通用UA格式。

  2. (Windows NT 10.0; Win64; x64)

    • 表示用户正在使用的操作系统是Windows 10,且是64位版本。

  3. AppleWebKit/537.36

    • AppleWebKit是一个开源的网页浏览器引擎,广泛应用于多个浏览器中,包括但不限于Safari。这里的数字“537.36”表示的是Webkit的一个特定版本。

  4. KHTML, like Gecko

    • KHTML是KHTML项目的一个早期分支,Gecko则是Mozilla Firefox所使用的渲染引擎。在这里,“KHTML, like Gecko”主要是为了向后兼容,确保网站认为这是一个与KHTML或Gecko兼容的浏览器。

  5. Chrome/120.0.0.0

    • 表明这是Google Chrome浏览器,并且其版本号为120.0.0.0。

  6. Safari/537.36

    • 虽然这台设备上实际运行的是Chrome浏览器,但很多基于WebKit内核的浏览器会在User-Agent中包含Safari的部分,因为WebKit最初是由Safari引入并流行起来的。这里提到的Safari版本也是537.36,与WebKit版本保持一致。

  7. Edg/120.0.0.0

    • 表示用户使用的是Microsoft Edge浏览器,且版本号为120.0.0.0。从Chromium版Edge开始,Edge浏览器采用了与Chrome相似的User-Agent格式,并在末尾添加了Edg标识符来区分于Chrome浏览器。

Sec-Fetch-Dest

  • 由现代浏览器在发送网络请求时自动添加,用来指示发起这次请求的目的地上下文类型。

  • 这个头部信息主要用于增强跨站请求的安全性和正确处理同源策略,帮助服务器更好地理解请求意图并作出适当的响应

  • 以下是可能的一些取值,用表格列出:

取值

含义

document

请求的目标是加载一个主文档,即一个新的HTML页面。

iframe

请求的目标资源将被嵌入到