HTTP头部大全
- Accept: 描述客户端可以接受的内容类型,用于告诉服务器客户端能理解哪些媒体类型。此头部帮助服务器决定以何种格式返回响应数据。常见类型包括:
text/html
:标准的网页内容类型。
application/json
:客户端希望接收 JSON 格式的数据,常用于 API 服务。
application/xml
:用于 XML 数据的传输。
- Accept-Charset: 指定客户端能接受的字符集,用于告诉服务器客户端可以处理哪些字符编码格式。有助于支持国际化内容。常见的字符集包括:
UTF-8
:支持全球所有字符的编码,是最常用的字符集。
ISO-8859-1
:西欧字符编码,较老的标准。
- Accept-Datetime: 请求在特定日期时间的资源版本,用于获取历史数据的场景。例如,可以请求服务器返回在某一特定日期之前有效的资源状态。
- Accept-Encoding: 告诉服务器客户端能够理解的内容编码方式,有助于服务器选择合适的压缩方法以减少数据传输量。常用的编码方式包括:
gzip
:一种广泛使用的数据压缩格式。
deflate
:另一种常见的压缩格式。
- Accept-Language: 指定客户端接受的语言,用于告诉服务器客户端优先接受哪种语言的内容,有助于提供本地化体验。常见的语言标识包括:
en-US
:美国英语。
zh-CN
:中国大陆的简体中文。
- Access-Control-Request-Headers: 用于 CORS(跨源资源共享)请求,指定客户端希望在实际请求中使用的非简单请求头。这个头部用来告知服务器在预检请求中,客户端将发送哪些额外的请求头。示例参数可能包括:
Content-Type
X-Custom-Header
- Access-Control-Request-Method: 用于 CORS,指定客户端请求许可的方法。此头部在预检请求中使用,以确定在实际请求中客户端允许使用哪些HTTP方法。示例方法包括:
- A-IM: 请求实例操作的列表,用于优化网络请求,允许客户端指定对实例进行的特定操作,如部分更新或检索。这通常用于支持部分响应功能。
- Authorization: 包含客户端提供的认证信息,通常用于验证请求的合法性。此头部常用于传送认证令牌或凭证,例如:
Basic {encoded-credentials}
:基本认证,使用用户名和密码的 Base64 编码。
Bearer {token}
:常用于 OAuth 2.0 令牌。
- Cache-Control: 控制缓存的行为,指示如何对响应数据进行缓存处理。常见的指令包括:
no-cache
:指示响应不能直接用于后续请求的回应,需向源服务器再次验证。
max-age={seconds}
:设置响应的最大新鲜度,以秒为单位。
- Connection: 控制客户端和服务器之间的连接选项,如何维持或关闭网络连接。常见的值包括:
keep-alive
:保持连接开启,用于后续请求。
close
:在响应后立即关闭连接。
- Content-Disposition: 在响应头中用于指定浏览器如何显示内容或文件,请求头中可以用于指示预期的保存文件名。例如:
attachment; filename="filename.jpg"
:提示浏览器下载文件,并提供默认的保存名称。
- Content-Encoding: 指定请求体的编码方式。这告诉服务器客户端能够理解何种编码方式,有助于正确解码数据。常见的编码方式包括:
- Content-Language: 指定请求体的语言,表明请求内容所使用的语言。这对于服务器来说是一种参考信息,有助于提供正确语言的内容。例如:
en-US
:美国英语。
zh-CN
:中国大陆的简体中文。
- Content-Length: 表示请求体的长度,以字节为单位。使用POST方法时,这个头部告诉服务器请求体的具体大小,有助于服务器正确处理接收的数据量。例如:
- Content-Location: 提供请求体的备用位置,表示请求内容实际上可从另一个URI获取。这通常用于提供资源的备用位置。例如:
Content-Location: http://example.com/alternate
- Content-MD5: 请求体的MD5校验值,用于校验数据完整性。这个头部提供了请求体内容的MD5散列值,有助于服务器检查数据在传输过程中是否被篡改。例如:
Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
- Content-Range: 指定在整个资源中请求或响应部分内容的位置和大小。这主要用于支持断点续传或部分请求功能。例如:
Content-Range: bytes 21010-47021/47022
- Content-Type: 请求体的媒体类型,POST请求中最关键的头部之一。这个头部告诉服务器请求中包含的数据类型,有助于服务器正确处理数据。常见的类型包括:
application/x-www-form-urlencoded
:这是最常见的 POST 数据提交的类型,浏览器的 HTML 表单默认就是以这种方式编码数据,表单字段内的数据会被编码为键值对,key1=value1&key2=value2
multipart/form-data
:当表单包含文件上传时,就需要使用这种格式。它允许表单发送大量数据,包括文件和数据,每部分数据都被分隔开,并为每部分的数据加上一个 Content-Type
(如果数据是非文本类型
application/json
:这种类型用于客户端告诉服务器消息体是序列化后的 JSON 字符串。这在现代 Web API 中非常常见,尤其是在构建 RESTful 服务时。
text/xml
或 application/xml
:用于 XML 数据的传输。
- Cookie: 发送存储在用户浏览器中的Cookie到服务器。这个头部包含一个或多个名称/值对,服务器可以用这些信息来恢复用户的会话状态。例如:
Cookie: user=JohnDoe; session_token=abc123
- Date: 消息发送的日期和时间。这个头部表明请求或响应生成的具体时间,通常用于日志记录和缓存机制。例如:
Date: Tue, 15 Nov 1994 08:12:31 GMT
- Device-Memory: 客户端设备的内存大小。这个头部有助于服务器了解客户端设备的内存能力,以便优化发送的数据量或处理方式。例如:
- Digest: 请求内容的摘要,通常与数字签名或加密相关。这个头部提供了请求数据的摘要,有助于服务器验证数据的完整性。常用的摘要方法包括 SHA-256。例如:
- DNT (Do Not Track): 用户的跟踪偏好。此头部用于指示网站用户偏好不被跟踪,如用户设置浏览器的隐私保护功能。例如:
DNT: 1
:表示用户不希望被跟踪。
DNT: 0
:表示用户允许跟踪。
- Downlink: 客户端的预估下载速率。这个头部有助于服务器了解客户端的网络速度,以便调整发送数据的速度和质量。例如:
Downlink: 1.25
:表示客户端的下载速率大约为1.25 Mbps。
- DPR (Device Pixel Ratio): 客户端屏幕的设备像素比。这个头部有助于服务器了解客户端的屏幕分辨率,以便优化发送图像或视觉内容的大小和质量。例如:
DPR: 2.0
:表示设备的像素比为2,通常是高分辨率屏幕。
- Early-Data: 用于指示请求中包含了预读取的数据。这有助于服务器识别请求可能基于旧的安全参数,特别是在使用TLS 1.3的0-RTT功能时。例如:
Early-Data: 1
:表示请求包含预读取数据
- ECT (Effective Connection Type): 客户端的网络连接类型。这个头部有助于服务器了解客户端的网络状况,如连接速度和稳定性,以便适当调整响应策略。例如:
ECT: 4g
:表示客户端当前的网络连接类型为4G,具有较快的速度。
- Expect: 客户端的特定请求期望。此头部用于通知服务器客户端期望在继续处理请求前满足某些条件。常见用法是:
Expect: 100-continue
:客户端在发送完请求头后,希望服务器确认是否可以发送请求体
- Forwarded: 表示客户端被代理后的相关信息,如原始IP。这个头部有助于服务器了解请求的真实来源。常见的参数包括:
Forwarded: for=192.0.2.60; proto=http; by=203.0.113.43
- From: 客户端的电子邮箱地址。这通常用于非交互式请求,如爬虫或自动化工具,以便服务器能联系到请求的发起者。例如:
- Front-End-Https: 指示前端连接是否通过HTTPS。这个头部主要用于代理服务器,帮助后端服务器了解客户端与前端代理之间的连接是否安全。例如:
- Host: 指定请求的服务器的域名和端口号。这个头部是 HTTP/1.1 请求中必需的,它告诉服务器客户端想要连接到的主机名和端口。例如:
Host: www.example.com
Host: www.example.com:8080
- HTTP2-Settings: 特定于HTTP/2的连接设置。这个头部用于在升级到HTTP/2之前发送一些HTTP/2特定的参数。例如:
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
- If-Match: 只有实体与给定的ETag匹配时,才执行操作。这用于优化并发控制,确保请求的处理基于最新的资源状态。例如:
If-Match: "737060cd8c284d8af7ad3082f209582d"
- If-Modified-Since: 只有资源自指定日期以来被修改过,才获取资源。这个头部用于缓存验证,减少不必要的数据传输。例如:
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
- If-None-Match: 如果实体不匹配ETag,就执行请求。这通常用于缓存刷新,当资源未被修改时返回304状态码,减少数据传输。例如:
If-None-Match: "737060cd8c284d8af7ad3082f209582d"
- If-Range: 如果实体未改变,就发送范围请求。这用于部分更新场景,如果资源未修改,服务器发送请求的部分内容。例如:
If-Range: "737060cd8c284d8af7ad3082f209582d"
- If-Unmodified-Since: 如果实体自指定日期未被修改,才执行请求。这用于避免在资源已被更改的情况下覆盖更新。例如:
If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT
- Keep-Alive: 保持持久连接的参数,有助于减少多次请求之间建立和关闭连接的开销。这个头部在 HTTP/1.1 中很常见,指定了超时时间和最大请求数。例如:
Keep-Alive: timeout=5, max=100
- Last-Modified: 资源的最后修改时间。这个头部用于告知客户端资源最后一次被修改的时间,常用于缓存验证。例如:
Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
- Max-Forwards: 最大转发数(用于TRACE和OPTIONS)。这个头部限制请求被代理或网关转发的次数,用于防止请求循环。例如:
- Origin: 用于实现CORS(跨源资源共享)的头部,说明请求从哪里发起。这个头部在进行跨源请求时非常重要,它告诉服务器请求来自哪个域。例如:
Origin: http://example.com
- Pragma: 用于兼容HTTP/1.0的缓存指令。虽然主要用于旧版本的HTTP,但仍可用于控制缓存。例如:
- Prefer: 表达客户端的处理偏好,例如请求服务器返回的响应类型或行为。例如:
Prefer: return=minimal
:请求服务器返回尽可能少的数据。
- Proxy-Authorization: 代理服务器需要的授权凭证。当请求被代理服务器处理时,此头部用于传递客户端的认证信息。例如:
Proxy-Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
- Proxy-Connection: 控制代理服务器连接的选项,类似于
Connection
头部,但用于代理环境。例如:
Proxy-Connection: keep-alive
- Range: 请求资源的特定范围。这个头部用于实现部分内容下载,允许客户端只请求资源的一部分,常用于大文件或视频的断点续传。例如:
Range: bytes=200-1000
:请求从第200字节到第1000字节的内容。
- Referer: 指出发起请求的页面地址。这个头部有助于服务器了解请求来源,可以用于日志记录、分析流量来源或防止CSRF攻击。例如:
Referer: http://example.com/index.html
- RTT: 网络往返时间。这个头部表示客户端到服务器的网络延迟时间,有助于服务器了解客户端的网络状况,优化响应策略。例如:
- Save-Data: 指示客户端希望优先考虑数据保存。这个头部用于告知服务器客户端处于数据节约模式,优先考虑减少数据使用。例如:
- Sec-CH-UA: 用户代理的请求头字段,用于客户端提示其浏览器和版本信息。这是一个客户端提示(Client Hints),用于提供有关用户代理的详细信息。例如:
Sec-CH-UA: "Google Chrome"; v="89"
- Sec-CH-UA-Arch: CPU架构。此客户端提示提供了客户端设备的处理器架构信息,帮助服务器优化返回的内容或脚本。例如:
- Sec-CH-UA-Bitness: 操作系统位数。这个头部指示客户端操作系统的位数,可能影响服务器选择发送特定格式或编译级别的资源。例如:
- Sec-CH-UA-Full-Version: 完整版本信息。提供浏览器的详细版本号,有助于服务器进行更精细的功能支持或优化。例如:
Sec-CH-UA-Full-Version: "89.0.4389.72"
- Sec-CH-UA-Full-Version-List: 浏览器完整版本列表。这个客户端提示提供多个用户代理的详细版本信息,帮助服务器理解客户端的浏览器环境。例如:
Sec-CH-UA-Full-Version-List: "Chrome 89.0.4389.72, Not A;Brand 99.0.0"
- Sec-CH-UA-Mobile: 是否为移动设备。此头部用于告知服务器请求来自移动设备,有助于服务器决定发送适合移动设备的响应。例如:
Sec-CH-UA-Mobile: ?1
:表示是移动设备。
Sec-CH-UA-Mobile: ?0
:表示不是移动设备。
- Sec-CH-UA-Model: 设备型号。这个头部提供设备的具体型号,有助于服务器了解客户端的具体硬件特性。例如:
Sec-CH-UA-Model: "Pixel 3"
- Sec-CH-UA-Platform: 操作系统。这个客户端提示提供请求的设备使用的操作系统,有助于服务器优化返回的内容或功能。例如:
Sec-CH-UA-Platform: "Windows"
Sec-CH-UA-Platform: "Android"
- Sec-CH-UA-Platform-Version: 操作系统版本。提供操作系统的具体版本号,帮助服务器判断客户端支持的功能和可能需要的兼容处理。例如:
Sec-CH-UA-Platform-Version: "10"
Sec-CH-UA-Platform-Version: "11"
- Service-Worker-Navigation-Preload: 服务工作预加载。这个头部用于控制Service Worker的行为,特别是在导航请求期间是否预加载内容。例如:
Service-Worker-Navigation-Preload: true
- TE: 传输编码的扩展。此头部用于指示服务器客户端支持哪些额外的传输编码,除了基本的“chunked”编码之外。例如:
- Trailer: 指定将在消息尾部发送的头字段。这用于在HTTP传输编码为“chunked”时,在消息末尾发送额外的元数据。例如:
- Transfer-Encoding: 规定传输数据的编码方式。这个头部用于指示服务器发送的数据应使用何种形式的编码进行传输,常用于指示分块传输(chunked)。例如:
Transfer-Encoding: chunked
- Upgrade: 允许客户端指示支持升级到更高版本或不同协议。此头部用于从一个旧协议切换到一个新协议,如从HTTP/1.1升级到HTTP/2。例如:
Upgrade: HTTP/2.0
Upgrade: websocket
- Upgrade-Insecure-Requests: 请求优先使用HTTPS。此头部由浏览器发送,用于告诉服务器客户端支持安全连接,希望将HTTP请求升级到HTTPS。例如:
Upgrade-Insecure-Requests: 1
- User-Agent: 包含有关发起请求的客户端信息。这个头部通常包括浏览器类型、版本、操作系统等信息,有助于服务器进行内容适配和分析。例如:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
- Via: 显示代理服务器的信息。此头部用于追踪请求中间经过的代理服务器,包括每个代理服务器的协议和版本。例如:
Via: 1.1 vegur
Via: 1.0 fred, 1.1 example.com (Apache/1.1)
- Viewport-Width: 客户端视口宽度。此客户端提示用于告知服务器客户端的视口宽度,以便服务器发送适合该尺寸的资源。例如:
- Want-Digest: 请求特定的内容摘要。此头部允许客户端指示希望服务器返回哪种摘要算法的结果,用于验证数据完整性。例如:
- Warning: 一般警告信息。此头部用于传达有关请求或响应的潜在问题的信息。例如:
Warning: 199 Miscellaneous warning
- Width: 主要用于图像、视频等请求中,指示客户端请求的资源的预期宽度。这有助于服务器优化资源尺寸,以更好地适配客户端的显示需求。例如:
Width: 800
:表示客户端请求宽度为800像素的资源。
- Set-Cookie: 服务器发送给客户端的Cookie。此头部用于在客户端创建或更新一个Cookie,通常在用户登录、状态保存等场景使用。例如:
Set-Cookie: session_token=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT
- Server: 处理请求的服务器软件信息。这个头部提供了服务器使用的软件名称和版本,有助于客户端了解服务器的软件环境。例如:
Server: Apache/2.4.1 (Unix)
- X-ATT-DeviceId: 设备ID,通常由某些特定服务或应用使用,用于标识客户端设备的唯一性。例如:
- X-Correlation-ID: 用于跟踪请求和响应的相关ID,主要在微服务架构中使用,以跟踪一个请求通过多个服务的路径。例如:
X-Correlation-ID: 12345abcde
- X-Csrf-Token: 用于防止跨站请求伪造的令牌。此头部包含一个安全令牌,客户端在提交请求时必须包含此令牌,以验证请求的合法性。例如:
X-Csrf-Token: i8XNjC4b8KVok4uw5RftR38Wgp2BFwql
- X-Forwarded-For: 原始IP地址。这个头部用于标识发起请求的客户端的实际IP地址,通常在客户端通过代理或负载均衡器连接到服务器时使用。例如:
X-Forwarded-For: 192.168.1.1
- X-Forwarded-Host: 原始主机名。此头部用于指示原始请求中使用的主机名,主要在代理或负载均衡环境中使用。例如:
X-Forwarded-Host: original.example.com
- X-Forwarded-Proto: 原始协议。这个头部指示原始请求中使用的协议(如http或https),主要在代理或负载均衡器转发请求时使用。例如:
- X-Http-Method-Override: 重写请求的HTTP方法。这个头部允许客户端在请求中指定一个不同的HTTP方法,主要用于绕过那些只支持GET和POST方法的服务器限制。例如:
X-Http-Method-Override: DELETE
- X-Requested-With: 标识Ajax请求。这个头部常见于Ajax请求中,用来告诉服务器请求是通过JavaScript的XMLHttpRequest发起的。例如:
X-Requested-With: XMLHttpRequest
- X-Request-ID: 请求的唯一标识符。这个头部用于为每个请求分配一个唯一的ID,有助于在服务器日志中跟踪和关联请求处理流程。例如:
- X-UIDH: 用户特定的头部,用于跟踪。这通常在运营商或服务提供商中使用,以标识用户的特定信息。例如:
- X-Wap-Profile: 指定移动设备配置文件。这个头部用于提供移动设备的配置文件链接,有助于服务器优化对移动设备的响应。例如:
X-Wap-Profile: http://wap.example.com/profiles/uaprof
- Content-Security-Policy: 指定网页可以加载哪些资源,提供一种防止跨站脚本攻击(XSS)的方法。例如:
Content-Security-Policy: default-src 'self'
- Expect-CT: 用于Expect Certificate Transparency,它要求浏览器检查服务器的证书是否在公共的CT日志中注册。例如:
Expect-CT: enforce, max-age=30
- X-Content-Type-Options: 阻止浏览器尝试基于响应的内容自行推测并覆盖响应的Content-Type头。常见值:
X-Content-Type-Options: nosniff
- X-Frame-Options: 指定是否允许将网页放在
<frame>
, <iframe>
, <object>
或 <embed>
标签中。常见值:
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
- X-XSS-Protection: 启用某些浏览器的跨站脚本保护功能。例如:
X-XSS-Protection: 1; mode=block
- Strict-Transport-Security: 告诉浏览器仅通过HTTPS访问当前资源。例如:
Strict-Transport-Security: max-age=31536000; includeSubDomains
- X-Permitted-Cross-Domain-Policies: 指定浏览器如何处理跨域请求。例如:
X-Permitted-Cross-Domain-Policies: none
- Referrer-Policy: 控制HTTP头中Referer字段的信息量。例如:
Referrer-Policy: no-referrer
Comments NOTHING