HTTP headers

HTTP标头使客户端和服务器可以通过HTTP请求或响应传递其他信息。HTTP标头由不区分大小写的名称,后跟冒号(:)和值组成。 值之前的空格将被忽略。

自定义专有标头历来都使用X-前缀,但是由于在RFC 6648中非标准字段成为标准字段时带来的不便,该约定在2012年6月被弃用;其他的列在IANA注册中心中,其原始内容在RFC 4229中定义。IANA还维护建议的新HTTP标头的注册表。

标题可以根据其上下文进行分组:

  • 常规标头适用于请求和响应,但与正文中传输的数据无关。
  • 请求标头包含有关要获取的资源或有关请求资源的客户端的更多信息。
  • 响应标头包含有关响应的其他信息,例如响应的位置或提供响应的服务器。
  • 实体标头包含有关资源主体的信息,例如其内容长度或MIME类型。

标头也可以根据代理处理方式进行分组:

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • TE
  • Trailer
  • Transfer-Encoding
  • Upgrade。

端到端头

这些标头必须发送给消息的最终接收者:请求的服务器,或响应的客户端。中间代理必须重新传输未经修改的标头,并且缓存必须存储它们。

逐跳标题

这些标头仅对单个传输级连接有意义,并且不得由代理重新传输或缓存。请注意,只能使用Connection常规标头设置逐跳标头。

认证方式

Section

WWW-Authenticate

定义用于访问资源的身份验证方法。

Authorization

包含用于通过服务器验证用户代理的凭据。

Proxy-Authenticate

定义用于访问代理服务器后方资源的身份验证方法。

Proxy-Authorization

包含用于通过代理服务器认证用户代理的凭据。

快取

Section

Age

对象位于代理缓存中的时间(以秒为单位)。

Cache-Control

请求和响应中的缓存机制的指令。

Clear-Site-Data

清除与请求网站关联的浏览数据(例如cookie,存储,缓存)。

Expires

响应被认为是过时的日期/时间。

Pragma

特定于实现的标头,可能在请求-响应链的任何地方产生各种影响。用于与HTTP / 1.0缓存(向后Cache-Control还不存在标头)的向后兼容性。

Warning

有关可能出现的问题的常规警告信息。

客户提示

Section

HTTP 客户端提示正在进行中。实际文档可以在HTTP工作组的网站上找到。

Accept-CH

服务器可以使用Accept-CH标头字段或<meta>具有http-equiv属性([HTML5])的等效HTML 元素来宣传对客户端提示的支持。

Accept-CH-Lifetime

服务器可以要求客户端记住该服务器在指定时间段内支持的一组客户端提示,以允许在对服务器源的后续请求中传递客户端提示([RFC6454])。

Early-Data

表示请求已在早期数据中传达。

Content-DPR

一个数字,指示所选图像响应的物理像素与CSS像素之间的比率。

DPR

一个数字,指示客户端当前的设备像素比率(DPR),即设备上布局视口([CSS2]的第9.1.1节)的物理像素与CSS像素([CSSVAL]的 5.2节)的比率。

Device-Memory

从技术上讲,它是设备内存API的一部分,此标头代表大约RAM客户端拥有的数量。

Save-Data

一个布尔值,指示用户代理对于减少数据使用量的偏好。

Viewport-Width

一个数字,以CSS像素表示布局视口的宽度。提供的像素值是四舍五入到最小的后续整数(即上限值)的数字。

如果Viewport-Width在消息中多次出现,则最后一个值将覆盖所有先前出现的值。

Width

的Width请求报头字段是一个数字,表示在物理像素所需的资源宽度(即图像的固有尺寸)。提供的像素值是四舍五入到最小的后续整数(即上限值)的数字。

如果在请求时未知所需的资源宽度,或者资源不具有显示宽度,Width则可以省略标题字段。如果Width消息中多次出现,则最后一个值将覆盖所有先前出现的值

有条件的

Section

Last-Modified

资源的最后修改日期,用于比较同一资源的多个版本。它的准确性不如ETag,但在某些环境中更易于计算。有条件的请求使用If-Modified-Since并If-Unmodified-Since使用此值来更改请求的行为。

ETag

标识资源版本的唯一字符串。有条件的请求使用If-Match并If-None-Match使用此值来更改请求的行为。

If-Match

使请求成为条件,并且仅在存储的资源与给定ETag之一匹配时才应用该方法。

If-None-Match

使请求成为条件,仅在存储的资源与任何给定的ETag 不匹配时才应用该方法。这用于更新缓存(用于安全请求),或用于防止已经存在的新资源上载。

If-Modified-Since

使请求成为条件请求,并期望仅在给定日期之后对实体进行修改的情况下才发送实体。仅当高速缓存已过期时才用于传输数据。

If-Unmodified-Since

使请求成为条件请求,并期望仅在给定日期之后未修改实体的情况下才发送实体。这样可以确保特定范围的新片段与先前片段的一致性,或者在修改现有文档时实现乐观的并发控制系统。

Vary

确定如何匹配请求标头,以决定是否可以使用缓存的响应,而不是从原始服务器请求新的响应。

连接管理

Section

Connection

控制当前事务完成后网络连接是否保持打开状态。

Keep-Alive

控制持久连接应保持打开状态的时间。

内容协商

Section

Accept

通知服务器有关可以发送回的数据类型。

Accept-Charset

客户可以理解哪种字符编码。

Accept-Encoding

可以对发送回的资源使用编码算法,通常是压缩算法。

Accept-Language

通知服务器有关服务器预期发送回的语言。这只是一个提示,并不一定要在用户的完全控制下:服务器应始终注意不要覆盖明确的用户选择(例如从下拉菜单中选择语言)。

控制项

Section

Expect

指示服务器正确处理请求需要满足的期望。

Max-Forwards

饼干

Section

Cookie

包含服务器先前发送的带有头的已存储HTTP cookieSet-Cookie。

Set-Cookie

将cookie从服务器发送到用户代理。

Cookie2

包含先前由服务器发送的带有Set-Cookie2标头的HTTP cookie ,但已被废弃。使用Cookie代替。

Set-Cookie2

将cookie从服务器发送到用户代理,但已被废弃。使用Set-Cookie代替。

CORS

Section

在此处了解有关CORS的更多信息。

Access-Control-Allow-Origin

指示是否可以共享响应。

Access-Control-Allow-Credentials

指示当凭据标志为true时是否可以公开对请求的响应。

Access-Control-Allow-Headers

用于响应预检请求,以指示发出实际请求时可以使用哪些HTTP标头。

Access-Control-Allow-Methods

指定在响应预检请求而访问资源时允许的方法。

Access-Control-Expose-Headers

通过列出标题的名称来指示哪些标题可以作为响应的一部分公开。

Access-Control-Max-Age

指示可以将预检请求的结果缓存多长时间。

Access-Control-Request-Headers

在发出预检请求时使用,以使服务器知道发出实际请求时将使用哪些HTTP标头。

Access-Control-Request-Method

在发出预检请求时使用,以使服务器知道在发出实际请求时将使用哪种HTTP方法。

Origin

指示提取的来源。

Service-Worker-Allowed

通过在Service Worker脚本的响应中包含此标头来消除路径限制。

Timing-Allow-Origin

指定允许查看通过Resource Timing API功能检索的属性值的原点,否则,由于跨域限制,该原点将报告为零。

X-Permitted-Cross-Domain-Policies

指定是否crossdomain.xml允许跨域策略文件()。该文件可以定义一个策略,以授予客户端(例如Adobe的Flash Player,Adobe Acrobat,Microsoft Silverlight或Apache Flex)跨域处理数据的权限,否则该域将受到同源策略的限制。有关 更多信息,请参见跨域策略文件规范。

不跟踪

Section

DNT

表示用户的跟踪首选项。

Tk

指示相应响应的跟踪状态。

资料下载

Section

Content-Disposition

指示传输的资源是应该内联显示(不带标题的默认行为),还是应该像下载一样进行处理,浏览器应显示“另存为”对话框。

邮件正文信息

Section

Content-Length

资源的大小,以十进制字节数表示。

Content-Type

指示资源的媒体类型。

Content-Encoding

用于指定压缩算法。

Content-Language

描述用于受众的人类语言,以便它允许用户根据用户自己的首选语言进行区分。

Content-Location

指示返回数据的备用位置。

代理人

Section

Forwarded

包含来自代理服务器面向客户端的信息,当请求路径中包含代理时,该信息会更改或丢失。

X-Forwarded-For

标识通过HTTP代理或负载平衡器连接到Web服务器的客户端的原始IP地址。

X-Forwarded-Host

标识请求客户端用于连接到您的代理或负载平衡器的原始主机。

X-Forwarded-Proto

标识客户端用来连接到代理或负载均衡器的协议(HTTP或HTTPS)。

Via

由代理(正向和反向代理)添加,并且可以出现在请求标头和响应标头中。

重新导向

Section

Location

指示将页面重定向到的URL。

请求上下文

Section

From

包含控制请求用户代理的人工用户的Internet电子邮件地址。

Host

指定服务器的域名(用于虚拟主机),以及(可选)服务器正在侦听的TCP端口号。

Referer

前一个网页的地址,从中指向当前请求页面的链接。

Referrer-Policy

控制在Referer标头中发送的引荐来源信息应包含在所提出的请求中。

User-Agent

包含一个特征字符串,该特征字符串使网络协议对等方可以识别请求软件用户代理的应用程序类型,操作系统,软件供应商或软件版本。另请参阅Firefox用户代理字符串参考。

响应上下文

Section

Allow

列出资源支持的HTTP请求方法集。

Server

包含有关原始服务器用于处理请求的软件的信息。

范围要求

Section

Accept-Ranges

指示服务器是否支持范围请求,如果支持,则以哪种单位表示范围。

Range

指示服务器应返回的文档部分。

If-Range

创建一个条件范围请求,该条件范围请求仅在给定的etag或日期与远程资源匹配时才得到满足。用于防止从资源的不兼容版本下载两个范围。

Content-Range

指示部分消息在全身消息中的位置。

安全

Section

Cross-Origin-Opener-Policy(COOP)

防止其他域打开/控制窗口。

Cross-Origin-Resource-Policy(CORP)

防止其他域读取应用此标头的资源的响应。

Content-Security-Policy(CSP)

控制允许用户代理为给定页面加载的资源。

Content-Security-Policy-Report-Only

允许Web开发人员通过监视(但不强制执行)效果来试验策略。这些违规报告包含通过HTTP 请求发送到指定URI 的JSON文档POST。

Expect-CT

允许站点选择报告和/或强制执行证书透明性要求,从而防止不注意该站点使用错误发行的证书的情况。当网站启用Expect-CT标头时,他们会要求Chrome浏览器检查该网站的任何证书是否出现在公共CT日志中。

Feature-Policy

提供一种机制,以允许和拒绝在其自己的框架以及嵌入的iframe中使用浏览器功能。

Public-Key-Pins(HPKP)

将特定的加密公共密钥与某个Web服务器关联,以降低使用伪造证书进行MITM攻击的风险。

Public-Key-Pins-Report-Only

将报告发送到标头中指定的report-uri,即使违反固定,仍允许客户端连接到服务器。

Strict-Transport-Security(HSTS)

强制使用HTTPS而不是HTTP进行通信。

Upgrade-Insecure-Requests

向服务器发送一个信号,以表示客户机对加密和认证响应的偏好,并且可以成功处理该upgrade-insecure-requests指令。

X-Content-Type-Options

禁用MIME嗅探,并强制浏览器使用中提供的类型Content-Type。

X-Download-Options

指示浏览器(Internet Explorer)不应显示“打开”从应用程序下载的文件的选项,以防止网络钓鱼攻击,否则该文件将获得在应用程序上下文中执行的访问权限。

X-Frame-Options (XFO)

指示浏览器是否应该被允许在渲染页面<frame>,<iframe>,<embed>或<object>。

X-Powered-By

可以由托管环境或其他框架来设置,并包含有关它们的信息,而不会为应用程序或其访问者提供任何有用的信息。取消设置此标头,以避免暴露潜在的漏洞。

X-XSS-Protection

启用跨站点脚本过滤。

服务器发送的事件

Section

Last-Event-ID

...

NEL

定义一种机制,使开发人员可以声明网络错误报告策略。

Ping-From

...

Ping-To

...

Report-To

用于指定浏览器向其发送警告和错误报告的服务器端点。

转移编码

Section

Transfer-Encoding

指定用于将实体安全地传输给用户的编码形式。

TE

指定用户代理愿意接受的传输编码。

Trailer

允许发件人在分块消息的末尾包括其他字段。

Web套接字

Section

Sec-WebSocket-Key

...

Sec-WebSocket-Extensions

...

Sec-WebSocket-Accept

...

Sec-WebSocket-Protocol

...

Sec-WebSocket-Version

...

其他

Section

Accept-Push-Policy

客户端可以通过在请求中发送Accept-Push-Policy标头字段来表达请求的推送策略。

Accept-Signature

客户端可以发送Accept-Signature标头字段以指示意图利用任何可用签名并指示其支持的签名类型。

Alt-Svc

用于列出获得此服务的替代方法。

Date

包含发起消息的日期和时间。

Large-Allocation

告诉浏览器正在加载的页面要执行大分配。

Link

的Link实体头字段提供了用于串行化在HTTP头中的一个或多个链接的装置。它在语义上等效于HTML <link>元素。

Push-Policy

A Push-Policy定义在处理请求时有关推送的服务器行为。

Retry-After

指示用户代理应在发出后续请求之前等待多长时间。

Signature

该Signature头域签名的名单交换,每个人的陪同下如何确定的权威和刷新签名信息。

Signed-Headers

的Signed-Headers报头字段标识响应的报头字段的有序列表中的签名包括。

Server-Timing

传达给定请求-响应周期的一个或多个度量标准和描述。

SourceMap

将生成的代码链接到源映射。

Upgrade

升级标头字段的相关RFC文档是RFC 7230的6.7节。该标准建立了在当前客户端,服务器,传输协议连接上升级或更改为其他协议的规则。例如,假设服务器决定确认并实现“升级”标头字段,则此标头标准允许客户端从HTTP 1.1更改为HTTP 2.0。双方均不需要接受“升级标题”字段中指定的条款。可以在客户端和服务器标头中使用它。如果指定了升级头字段,那么发送者还必须发送带有指定升级选项的连接头字段。有关Connection标头字段的详细信息,请参见上述RFC的6.1节。

X-DNS-Prefetch-Control

控制DNS预取,此功能使浏览器可以主动对用户可能选择遵循的两个链接以及文档引用的项目的URL(包括图像,CSS,JavaScript等)执行域名解析。

X-Firefox-Spdy

...

X-Pingback

...

X-Requested-With

...

X-Robots-Tag

用于指示如何在公共搜索引擎结果中为网页建立索引。标题实际上等效于<meta name="robots" content="...">。

X-UA-Compatible

Internet Explorer使用该信号来指示要使用哪种文档模式。

本文分享自微信公众号 - 黑伞攻防实验室(hack_umbrella)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券