HTTP头字段是超文本传输协议(HTTP)中请求和响应消息头部分的组成部分。他们定义了HTTP事务的操作参数。
一般格式
标题字段在请求或响应行之后传输,这是消息的第一行。标题字段是以明文字符串格式由冒号分隔的名称 - 值对,以回车符(CR)和换行符(LF)字符序列结尾。标题部分的结尾由空字段(行)表示,导致两个连续CR-LF对的传输。过去,长线可以折成多行,作为下一行的第一个字符的空格(SP)或水平制表符(HT)表示后续行。这种折叠现在已被弃用。
字段名称
互联网工程任务组(IETF)在RFC 7230,7231,7232,7233,7234和7235中标准化了一组核心字段,标头字段的永久注册表和临时注册库由IANA维护。其他字段名称和允许值可由每个应用程序定义。
非标准标题字段通常是通过在字段名称前添加标记来标记的,X-
但该标准在2012年6月已过时,因为非标准字段成为标准时会造成不便。Downgraded-
2013年3月取消了较早的使用限制。
字段值
几个字段可以包含注释(例如,在用户代理,服务器,通过字段中),这可以被软件忽略。
许多字段值可能包含质量(q)键值对,指定用于内容协商的权重。
大小限制
该标准对每个头字段名称或值的大小或字段的数量没有限制。但是,由于实际和安全原因,大多数服务器,客户端和代理软件都会施加一些限制。例如,默认情况下,Apache 2.3服务器将每个字段的大小限制为8,190字节,并且单个请求中最多可以包含100个标题字段。
请求字段
标准请求字段
标题字段名称 | 描述 | 例 | 状态 |
---|---|---|---|
Accept | 媒体类型(s)是(/)是可接受的响应。 | Accept: text/plain | 常驻 |
Accept-Charset | 可接受的字符集。 | Accept-Charset: utf-8 | 常驻 |
Accept-Encoding | 可接受的编码列表。 | Accept-Encoding: gzip, deflate | 常驻 |
Accept-Language | 用于响应的可接受的人类语言列表。 | Accept-Language: en-US | 常驻 |
Accept-Datetime | 可接受的版本及时。 | Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT | 临时 |
Access-Control-Request-Method, Access-Control-Request-Headers | 初始化一个请求,是否为源请求跨域资源分享 | Access-Control-Request-Method: GET | 永久:标准 |
Authorization | HTTP认证的认证凭证。 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== | 常驻 |
用于指定请求 - 响应链上所有缓存机制必须遵守的指令。 | Cache-Control: no-cache | 常驻 | |
Connection | 当前连接的控制选项和逐跳请求字段的列表。不得与HTTP / 2一起使用。 | Connection: keep-alive | 常驻 |
Cookie | 服务器先前使用Set-Cookie发送的HTTP cookie。 | Cookie: $Version=1; Skin=new; | 永久:标准 |
Content-Length | 请求主体的长度以八位字节为单位(8位字节)。 | Content-Length: 348 | 常驻 |
Content-MD5 | 一个Base64编码过的二进制MD5请求主体的内容的总和。 | Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ== | 已过时 |
Content-Type | 请求主体的媒体类型(与POST和PUT请求一起使用)。 | Content-Type: application/x-www-form-urlencoded | 常驻 |
Date | 消息起源的日期和时间(按照RFC7231日期时间/格式定义的“HTTP-date”格式)。 | Date: Tue, 15 Nov 1994 08:12:31 GMT | 常驻 |
Expect | 表示客户端需要特定的服务器行为。 | Expect: 100-continue | 常驻 |
Forwarded | 通过HTTP代理披露连接到Web服务器的客户端的原始信息。 | Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43 Forwarded: for=192.0.2.43, for=198.51.100.17 | 常驻 |
From | 发出请求的用户的电子邮件地址。 | From: user@example.com | 常驻 |
Host | 服务器的域名(用于虚拟主机)以及服务器正在侦听的TCP端口号。如果端口是用于请求服务的标准端口号可被省略。 自HTTP / 1.1以来强制执行。如果请求直接在HTTP / 2中生成,则不应使用该请求。 | Host: baidu.com:8080
| 常驻 |
If-Match | 只有在客户端提供的实体与服务器上的相同实体相匹配时才执行操作。这主要是为了像PUT这样的方法,只有在用户上次更新后才更新资源。 | If-Match: "737060cd8c284d8af7ad3082f209582d" | 常驻 |
If-Modified-Since | 如果内容未更改,则允许返回304未修改。 | If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT | 常驻 |
If-Unmodified-Since | 如果内容未更改,则允许返回304 未修改, | If-None-Match: "737060cd8c284d8af7ad3082f209582d" | 常驻 |
If-Range | 如果实体没有变化,请寄给我缺少的部分; 否则,请将整个新实体发送给我。 | If-Range: "737060cd8c284d8af7ad3082f209582d" | 常驻 |
If-Unmodified-Since | 如果实体自特定时间以来未被修改,则仅发送响应。 | If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT | 常驻 |
Max-Forwards | 限制消息可以通过代理或网关转发的次数。 | Max-Forwards: 10 | 常驻 |
Origin | 发起跨源资源共享请求(向服务器请求访问控制 - *响应字段)。 | Origin: http://www.example-social-network.com | 永久:标准 |
Pragma | 特定于实现的字段可能在请求 - 响应链的任何地方产生各种效果。 | Pragma: no-cache | 常驻 |
Proxy-Authorization | 连接到代理的授权凭证。 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== | 常驻 |
Range | 只请求实体的一部分。字节从0开始编号。请参见字节服务。 | Range: bytes=500-999 | 常驻 |
Referer | 这是之前网页的地址,从中可以看到当前请求页面的链接。(在RFC中,“referrer”一词拼写错误,在大多数实现中它已成为标准用法并被认为是正确的术语) | Referer: http://en.wikipedia.org/wiki/Main_Page | 常驻 |
TE | 用户代理愿意接受的传输编码:可以使用与响应头字段Transfer-Encoding相同的值,加上“拖尾”值(与“分块 ”传输方法相关)以通知服务器它期望的值在最后一个零大小的块之后接收预告片中的其他字段。 仅 | TE: trailers, deflate | 常驻 |
User-Agent | 用户代理的用户代理字符串。 | User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0 | 常驻 |
Upgrade | 请求服务器升级到另一个协议。 不得在HTTP / 2中使用。 | Upgrade: h2c, HTTPS/1.3, IRC/6.9, RTA/x11, websocket | 常驻 |
Via | 通知服务器发送请求的代理服务器。 | Via: 1.0 fred, 1.1 example.com (Apache/1.1) | 常驻 |
Warning | 关于实体主体可能存在的问题的一般警告。 | Warning: 199 Miscellaneous warning | 常驻 |
常见的非标准请求字段
字段名称 | 描述 | 例 |
---|---|---|
Upgrade-Insecure-Requests | 告诉服务器(大概在HTTP - > HTTPS迁移过程中)托管混合内容 ,客户端会偏好重定向到HTTPS并且可以处理 不得与HTTP / 2一起使用 | Upgrade-Insecure-Requests: 1 |
X-Requested-With | 主要用于识别Ajax请求。大多数JavaScript框架将这个字段的值发送给XMLHttpRequest | X-Requested-With: XMLHttpRequest |
DNT | 请求Web应用程序禁用其跟踪用户。这是Mozilla版本的X-Do-Not-Track标题字 段(自Firefox 4.0 Beta 11起)。Safari和IE9也支持这一领域。2011年3月7日, 向IETF提交了一份提案草案。所述的W3C跟踪保护工作组正在生产的规范。 | DNT: 1 (Do Not Track Enabled)
|
X-Forwarded-For | 用于通过HTTP代理或负载平衡器识别连接到web服务器的客户端的发起IP地址 。被转发的头部所取代。 | X-Forwarded-For: client1, proxy1, proxy2
|
X-Forwarded-Host | 用于识别由在客户端请求的原始主机 ,由于主机名和/或反向代理(负载平衡器)的端口可以从 原始服务器处理请求不同。被转发的头部所取代。 | X-Forwarded-Host: en.wikipedia.org:8080
|
X-Forwarded-Proto | 用于识别一个HTTP请求的始发协议,因为反向代理(或负载平衡器 )可以使用HTTP,即使该请求到反向代理是HTTPS web服务器进行 通信。谷歌客户与谷歌服务器通话时使用的头部替代形式(X-ProxyUser-Ip) 。被转发的头部所取代。 | X-Forwarded-Proto: https |
Front-End-Https | Microsoft应用程序和负载平衡器使用的非标准标题字段 | Front-End-Https: on |
X-Http-Method-Override | 请求Web应用程序使用标题字段中给出的方法(通常为PUT或DELETE )覆盖请求中指定的方法(通常为POST)。这可以在用户代理或防火墙 阻止直接发送PUT或DELETE方法时使用(请注意,这是软件组件中的 错误,应该是固定的,或者是有意的配置,在这种情况下绕过它可能会做错事)。 | X-HTTP-Method-Override: DELETE |
X-ATT-DeviceId | 允许更轻松地解析通常在AT&T设备的用户代理字符串中找到的MakeModel /固件 | X-Att-Deviceid: GT-P7320/P7320XXLPG |
X-Wap-Profile | 链接到Internet上的XML文件,并提供有关当前连接的设备的完整说明 和详细信息。在右边的示例中是AT&T Samsung Galaxy S2的XML文件。 | x-wap-profile: |
Proxy-Connection | 作为对HTTP规范的误解而实现。常见是因为早期HTTP版本的实现错误 。与标准连接字段具有完全相同的功能。 不得与HTTP / 2一起使用。 | Proxy-Connection: keep-alive |
X-UIDH | 服务器端插入识别Verizon Wireless客户的唯一ID的深度数据包 ; 也被称为“perma-cookie”或“supercookie” | X-UIDH: ... |
X-Csrf-Token | 用于防止跨站请求伪造。替代标题名称是:X-CSRFToken [31]和X-XSRF-TOKEN | X-Csrf-Token: i8XNjC4b8KVok4uw5RftR38Wgp2BFwql |
X-Request-ID, X-Correlation-ID | 关联客户端和服务器之间的HTTP请求。 | X-Request-ID: f058ebd6-02f7-4d3f-942e-904344e8cde5 |
响应字段
标准响应字段
字段名称 | 描述 | 例 | 状态 |
---|---|---|---|
Access-Control-Allow-Origin, Access-Control-Allow-Credentials, Access-Control-Expose-Headers, Access-Control-Max-Age, Access-Control-Allow-Methods, Access-Control-Allow-Headers | 指定哪些网站可以参与跨源资源共享 | Access-Control-Allow-Origin: * | 永久:标准 |
Accept-Patch | 指定该服务器支持哪些补丁文档格式 | Accept-Patch: text/example;charset=utf-8 | 常驻 |
Accept-Ranges | 该服务器通过字节服务支持哪些部分内容范围类型 | Accept-Ranges: bytes | 常驻 |
Age | 对象在代理缓存中的时间(以秒为单位) | Age: 12 | 常驻 |
Allow | 指定资源的有效方法。用于405方法不允许 | Allow: GET, HEAD | 常驻 |
Alt-Svc | 服务器使用“Alt-Svc”标题(表示替代服务)来指示 其资源也可以在不同的网络位置(主机或端口)访问或使用不同的协议 当使用HTTP / 2时,服务器应该发送一个ALTSVC帧。 | Alt-Svc: http/1.1="http2.example.com:8001"; ma=7200 | 常驻 |
Cache-Control | 告诉所有从服务器到客户端的缓存机制,他们是否可能缓存 这个对象。它以秒为单位进行测量 | Cache-Control: max-age=3600 | 常驻 |
Connection | 当前连接的控制选项以及逐跳响应字段的列表。 不得与HTTP / 2一起使用。 | Connection: close | 常驻 |
Content-Disposition | 有机会为二进制格式的已知MIME类型提出“文件下载”对话框 ,或为动态内容建议一个文件名。引号是特殊字符所必需的。 | Content-Disposition: attachment; filename="fname.ext" | 常驻 |
Content-Encoding | 数据上使用的编码类型。 | Content-Encoding: gzip | 常驻 |
Content-Language | 封闭内容的目标受众的自然语言或语言 | Content-Language: da | 常驻 |
Content-Length | 响应主体的长度以八位字节为单位(8位字节) | Content-Length: 348 | 常驻 |
Content-Location | 返回数据的备用位置 | Content-Location: /index.htm | 常驻 |
Content-MD5 | 一个Base64编码的二进制MD5响应内容的总和 | Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ== | 已过时 |
Content-Range | 这部分消息属于全身消息 | Content-Range: bytes 21010-47021/47022 | 常驻 |
Content-Type | 此内容的MIME类型 | Content-Type: text/html; charset=utf-8 | 常驻 |
Date | 消息发送的日期和时间(按照RFC-7231定义的“HTTP-date”格式) | Date: Tue, 15 Nov 1994 08:12:31 GMT | 常驻 |
ETag | 特定版本资源的标识符,通常是消息摘要 | ETag: "737060cd8c284d8af7ad3082f209582d" | 常驻 |
Expires | 给出响应被视为过时的日期/时间(按照RFC-7231定义的“HTTP-date”格式) | Expires: Thu, 01 Dec 1994 16:00:00 GMT | 永久:标准 |
Last-Modifide | 请求对象的最后修改日期(按照RFC-7231定义的“HTTP-date”格式) | Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT | 常驻 |
Link | 用于表示与其他资源的类型化关系,其中关系类型由定义 | Link: </feed>; rel="alternate" [41] | 常驻 |
Location | 用于重定向或创建新资源时。 |
| 常驻 |
P3P | 该字段应该被支持以P3P:CP="your_compact_policy"的形式设置P3P策 略。然而,P3P并没有起飞大多数浏览器都没有完全实现它,许多网站 用假政策文本设置这个字段,这足以欺骗浏览器P3P政策的存在并授予 第三方Cookie的权限。 | P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info." | 常驻 |
Pragma | 特定于实现的字段可能在请求 - 响应链的任何地方产生各种效果。 | Pragma: no-cache | 常驻 |
Proxy-Authenticate | 请求身份验证以访问代理。 | Proxy-Authenticate: Basic | 常驻 |
Public-Key-Pins | HTTP公共密钥固定,宣布网站的真实TLS证书的散列 | Public-Key-Pins: max-age=2592000; pin-sha256="E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g="; | 常驻 |
Retry-After | 如果一个实体暂时不可用,这将指示客户稍后再试。值可能是指定的时间段(以秒为单位)或HTTP日期。 |
| 常驻 |
Server | 服务器的名称 | Server: Apache/2.4.1 (Unix) | 常驻 |
Set-Cookie | 一个HTTP cookie | Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1 | 永久:标准 |
Strict-Transport-Security | HSTS策略通知HTTP客户端要缓存仅HTTPS策略需要多长时间,以及这是否适用于子域。 | Strict-Transport-Security: max-age=16070400; includeSubDomains | 永久:标准 |
Trailer | 尾部通用字段值表示给定的头部字段集合存在于用分块传输编码编码的消息的尾部中。 | Trailer: Max-Forwards | 常驻 |
Transfer-Encoding | 用于安全地将实体传送给用户的编码形式。目前定义的方法是:分块,压缩,缩小,gzip,身份。 不得与HTTP / 2一起使用。 | Transfer-Encoding: chunked | 常驻 |
TK | 跟踪状态标头,建议发送的值是为了响应DNT(不跟踪),可能的值: | Tk: ? | 常驻 |
Upgrade | 要求客户升级到另一个协议。 不得在HTTP / 2中使用[ | Upgrade: h2c, HTTPS/1.3, IRC/6.9, RTA/x11, websocket | 常驻 |
Vary | 告诉下游代理如何匹配未来的请求头,以决定是否可以使 用缓存的响应,而不是从原始服务器请求新的响应。 |
| 常驻 |
Via | 通知客户端发送响应的代理服务器。 | Via: 1.0 fred, 1.1 example.com (Apache/1.1) | 常驻 |
Warning | 关于实体主体可能存在的问题的一般警告。 | Warning: 199 Miscellaneous warning | 常驻 |
WWW-Authenticate | 指示应该用于访问请求实体的认证方案。 | WWW-Authenticate: Basic | 常驻 |
X-Frame-Options | 点击劫持保护:否认 -框架内没有渲染,SAMEORIGIN -没有渲染,如果不匹配的起源,allow-from - allow from specified location, allowall-non-standard,允许从任何位置 | X-Frame-Options: deny | 已过时 |
常见的非标准响应字段
字段名称 |
描述 | 例 |
---|---|---|
Content-Security-Policy, X-Content-Security-Policy, X-WebKit-CSP | 内容安全策略定义。 | X-WebKit-CSP: default-src 'self' |
Refresh | 用于重定向或创建新资源时。此刷新在5秒后重定向 。由Netscape引入的并由大多数Web浏览器支持的标头扩展。 | Refresh: 5; url=http://www.w3.org/pub/WWW/People.html |
Status | 应使用单独的“状态行”,而不是由rfc-7230定义。 | Status: 200 OK |
Timing-Allow-Origin | 的 由的特征检索的属性的值的起源资源时序API,否则会报告为零由于跨来源的限制。 | Timing-Allow-Origin: *
|
X-Content-Duration | 以秒为单位提供音频或视频的持续时间; 仅由Gecko浏览器支持 | X-Content-Duration: 42.666 |
X-Content-Type-Options | 唯一定义的值“nosniff”可防止Internet Explorer从MIME 中嗅探到已声明的内容类型的响应。在下载扩展程序时,这也适用于Google Chrome。 | X-Content-Type-Options: nosniff [53] |
X-Powered-By | 指定技术(如ASP.NET,PHP,JBoss的)支持Web应用程序(版本的详细信息往往是X-Runtime ,X-Version 或X-AspNet-Version ) | X-Powered-By: PHP/5.4.0 |
X-Request-ID, X-Correlation-ID | 关联客户端和服务器之间的HTTP请求。 | X-Request-ID: f058ebd6-02f7-4d3f-942e-904344e8cde5 |
X-UA-Compatible | 建议使用首选渲染引擎(通常是向后兼容模式)来显示内容。还用于在Internet Explorer中激活Chrome Frame。 | X-UA-Compatible: IE=EmulateIE7 X-UA-Compatible: IE=edge X-UA-Compatible: Chrome=1 |
X-XSS-Protection | 跨站点脚本(XSS)过滤器 | X-XSS-Protection: 1; mode=block |
选定字段的影响
避免缓存
如果Web服务器响应,Cache-Control: no-cache
则Web浏览器或其他缓存系统(中间代理)不必使用响应来满足后续响应,而无需先与源服务器进行检查(此过程称为验证)。此标头字段是HTTP版本1.1的一部分,并且被某些缓存和浏览器忽略。可以通过设置来模拟Expires
HTTP版本1.0标题字段值的时间早于响应时间。请注意,no-cache不会指示浏览器或代理是否缓存内容。它只是告诉浏览器和代理在使用服务器之前验证缓存内容(这是通过使用If-Modified-Since,If-Unmodified-Since,If-Match,If-None-Match属性来完成的)。因此,发送无缓存值指示浏览器或代理仅仅基于缓存内容的“新鲜度标准”来使用缓存内容。另一种常见方式是防止未经验证的用户向用户显示旧内容Cache-Control: max-age=0
。这指示用户代理内容已过时,应在使用前进行验证。
头域Cache-Control: no-store
旨在指示浏览器应用程序尽最大努力不写入磁盘(即不缓存它)。
不应该缓存资源的请求不保证它不会被写入磁盘。具体来说,HTTP / 1.1定义将历史存储和高速缓存区分开来。如果用户导航回到上一页,则浏览器可能仍会向您显示已存储在历史存储中的磁盘上的页面。根据规范,这是正确的行为。根据协议是HTTP还是HTTPS,许多用户代理在从历史存储或缓存中加载页面时显示不同的行为。
的Cache-Control: no-cache
HTTP / 1.1报头字段还意在由客户机发出的请求中使用。这是浏览器告诉服务器和任何中间缓存它需要新版本资源的方法。Pragma: no-cache
在HTTP / 1.0规范中定义的头部字段具有相同的用途。但是,它只是为请求标头定义的。它在响应头中的含义没有指定。Pragma: no-cache
响应中的行为是特定于实现的。虽然一些用户代理千万要注意在回应这一领域,的HTTP / 1.1 RFC明确警告说,不要依赖此行为。