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

相关推荐
利刃大大1 小时前
【高并发服务器:HTTP应用】十六、HttpContext上下文模块 && HttpServer服务器模块&& 服务器测试
运维·服务器·http·高并发·项目
是专家不是砖家1 小时前
rk3562 udp发送带宽500Mbps出现丢包问题
网络·网络协议·udp·rk3562·udp丢包·t507
wanhengidc2 小时前
云手机通常使用什么架构
服务器·网络·安全·游戏·智能手机·云计算
在路上看风景2 小时前
5.1 路由选择算法
网络
xiaoxiongip6663 小时前
假设两个设备在不同网段,网关怎么设置才能通呢
网络·爬虫·python·https·智能路由器
Full Stack Developme3 小时前
java.net.http 包详解
java·http·.net
Li zlun4 小时前
TCP/IP协议:互联网的基石与通信灵魂
网络·网络协议·tcp/ip
SSL店小二4 小时前
IP SSL证书申请全过程及注意事项
服务器·网络·网络协议·https·ssl
NewCarRen4 小时前
自动驾驶与联网车辆网络安全:系统级威胁分析与韧性框架
网络·网络安全·自动驾驶
Broken Arrows6 小时前
排查网络问题的一些工具的作用和常用使用方法
linux·网络·学习