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

  • 传递客户端存储的服务器设置的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 | 请求的目标资源将被嵌入到<iframe>标签中。 |
| img | 请求的是图片资源,对应于<img>标签。 |
| style | 请求的内容将作为CSS样式表被应用,对应于<link rel="stylesheet">或<style>标签中的内容。 |
| script | 请求的是JavaScript脚本文件,对应于<script>标签中的外部脚本引用。 |
| font | 请求的是字体资源,通常用于 @font-face 规则或通过<link rel="preload">预加载的字体。 |
| media | 请求的是音频或视频等多媒体资源,对应于<audio>、<video>或<source>标签。 |
| worker | 请求是为了创建Web Worker或Service Worker脚本。 |
| frame | 请求的目标资源将在一个新窗口(frame)中打开。 |
| object | 请求的内容将被插入到<object>标签中。 |
| embed | 请求的内容将被插入到<embed>标签中。 |
| prefetch | 请求是预加载资源,浏览器预测用户可能会需要但还未实际请求的资源。 |
| subresource | 请求的是其他类型的子资源,不属于上述任何特定类型,但对当前页面的渲染或功能有直接作用。 |

Sec-Fetch-Mode

  • 它由现代浏览器自动添加到跨域请求中,用于指示请求的模式或类型。

  • 这个头部信息帮助服务器理解请求的上下文和意图,从而更准确地执行同源策略和CORS策略(是一种允许当前域的资源被其他域的脚本请求访问的机制)

  • 以下是可能的一些取值的范围

|-----------------|-----------------------------------------------------|
| 取值 | 含义 |
| navigate | 请求的目标是加载一个新的顶级文档(即打开新页面或重新加载当前页面)。 |
| same-origin | 请求的目标资源与当前页面同源,遵循同源策略。 |
| no-cors | 无痕跨域请求模式,限制了获取的数据类型和范围,并且不能触发任何副作用。 |
| cors | 跨源资源共享(CORS)模式请求,允许不同源之间的数据交互,需要服务器支持并返回适当的CORS响应头。 |
| websocket | 请求是为了建立WebSocket连接,用于实时双向通信。 |
| fetch | 请求是由Fetch API发起的,可能是脚本、Worker或其他API调用导致的资源加载。 |
| nested-navigate | (较新版本浏览器引入)请求发生在iframe中,尝试在iframe内进行导航,如加载新的HTML页面。 |

Sec-Fetch-Site

  • 由现代浏览器在发送网络请求时自动添加,用于指示发起这次请求的源站点与目标资源之间的关系

  • 这个头部信息有助于服务器更好地理解请求来源并实施安全策略,尤其是在处理跨站请求时

  • 以下是一些可能取值的范围

|-------------|------------------------------------------|
| 取值 | 含义 |
| none | 请求的目标是同源请求,即源站点和目标资源具有相同的协议、主机名和端口。 |
| same-origin | 请求的目标资源与当前页面位于同一域名下,严格遵循同源策略。 |
| same-site | 请求的目标资源在同一网站内,但不一定是完全同源,例如:从子域名向主域名请求资源。 |
| cross-site | 请求的目标资源位于不同网站,即跨域请求,这通常需要CORS策略的支持。 |

Sec-Fetch-User

  • 仅针对用户激活发起的请求发送,其值始终为 【?1】

  • 服务器可以使用此标头来标识来自文档、iframe 等的导航请求是否由用户发起

  • 貌似没什么特殊含义,也只有一个取值

Content-Type

  • 定义请求主体中的数据格式、

  • 例:Content-Type: application/x-www-form-urlencoded或Content-Type: application/json

Authorization

  • 主要用于提供客户端的身份验证信息

更多:HTTP 标头(header) - HTTP | MDN

相关推荐
Tassel_YUE1 小时前
网络自动化04:python实现ACL匹配信息(主机与主机信息)
网络·python·自动化
Diamond技术流1 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
Spring_java_gg1 小时前
如何抵御 Linux 服务器黑客威胁和攻击
linux·服务器·网络·安全·web安全
方方怪3 小时前
与IP网络规划相关的知识点
服务器·网络·tcp/ip
weixin_442643424 小时前
推荐FileLink数据跨网摆渡系统 — 安全、高效的数据传输解决方案
服务器·网络·安全·filelink数据摆渡系统
阑梦清川4 小时前
JavaEE初阶---网络原理(五)---HTTP协议
网络·http·java-ee
阿尔帕兹4 小时前
构建 HTTP 服务端与 Docker 镜像:从开发到测试
网络协议·http·docker
FeelTouch Labs5 小时前
Netty实现WebSocket Server是否开启压缩深度分析
网络·websocket·网络协议
千天夜6 小时前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流
长弓三石7 小时前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙