HTTP Header
HTTP Header是关于正在发送的消息的可选元信息。这些信息还可能包含有关发送者的特定详细信息。
请求和响应都可以包含HTTP Header。
一个HTTP Header可以包含多个键值对。每个键和值之间用冒号:
分割。每对都独立成行。
下面是一个典型的浏览器发送的请求头:
1 | connection=keep-alive |
下面是一个典型的服务器返回的响应头:
1 | Content-Length:492 |
常用的标准请求头
Accept
客户端可以接受的媒体类型,如:Accept: text/html
。
Accept-Charset
客户端可接受的字符集。如:Accept-Charset: utf-8
。
Accept-Encoding
客户端可接受的编码列表(将消息转换为编码形式)。如:Accept-Encoding: gzip, deflate
。
Accept-Language
客户端可接受的语言列表。如:Accept-Language: en-US,en;q=0.8
。
Connection
Connection字段允许发送者指定该特定连接所需的选项。当我们使用“Connection: keep-alive”发出请求时,对服务器的后续请求将使用相同的TCP连接。这称为HTTP持久连接或长连接。Apache httpd 2.2及以上版本的默认连接超时为5秒。“Connection: close”表示一旦发出请求,服务器就需要关闭连接。因此,对于每个请求,将建立新的TCP连接。如:Connection: keep-alive
。
User-Agent
这包含提供有关系统和发出请求的浏览器/应用程序的特定详细信息的标记。
如:user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3704.3 Safari/537.36
From
发出请求的用户的电子邮件地址。如:user@example.com
。
Authorization
HTTP身份验证的身份验证凭据。如:Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
。
If-Modified-Since
如果这个字段指定的时间内,未修改请求内容,服务器将返回304(未修改)的响应,而不返回任何消息体。如:If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
。
常用的标准响应头
Cache-Control
此标头指示浏览器是否可以缓存资源。包含如下一些值:
"no-cache", "max-age=<number of seconds>", "no-store", "must-revalidate" ", "only-if-cached"
。如:Cache-Control: max-age=3600
Content-Encoding
响应体的编码类型。如:Content-Encoding: gzip
。
Content-Length
响应体的长度,以字节为单位。如:Content-Length: 348
。
Content-Type
响应体的MIME类型。如:Content-Type:text/html;charset=ISO-8859-1
。
Content-Location
它可用于为响应中包含的实体提供资源位置,当它可以从备用位置访问时,与请求的资源的URI分开。当请求的资源具有多个可用表示时,也可以使用它。如:多语言。如:Content-Location: /data.json
。
Date
响应被发送的日期时间。如:Date:Wed, 17 Feb 2016 19:57:04 GMT
。
Last-Modified
请求资产最后一次修改的时间。如:Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
。
Location
用于重定向,或者在创建新资源时使用。如:Location: http://www.example.com/newPage.html
。
Pragma
可能包含特定实现的字段。例如,’no-cache’ 用于 HTTP/1.0 实现以防止客户端上的缓存。
如:Pragma: no-cache
。
Retry-After
如果实体暂时不可用,则此指令会告知客户端稍后再试。
如:Retry-After: 120
又如 Retry-After: Fri, 07 Nov 2014 23:59:59 GMT
Server
服务器的名称以及其他详细信息。如:Server:Apache-Coyote/1.1
。
Set-Cookie
服务器发送Set-Cookie标头以在用户的系统上创建cookie。
如:Set-Cookie: UserID=joe; last-visited=2016-02-14
。
Allow
Allow头字段列出Request-URI标识的资源支持的方法集。如:Allow: GET, HEAD
。
WWW-Authenticate
如果HTTP请求缺少凭据,服务器可以回复401(未授权)状态代码和WWW-Authenticate头字段。
WWW-Authenticate头字段指示适用于目标资源的认证方案和参数。
如:WW-Authenticate: Basic realm="Some value"
。
其中 realm 值用于对资源进行分组。该组中的所有页面将共享相同的身份验证凭据。
在HTTP请求中发送自定义标头
HTTP请求还可以包括自定义标头。
这不可能使用HTML超链接或通过提交。
我们可以使用Ajax的XMLHttpRequest对象来设置自定义标头。
1 | xmlhttp.setRequestHeader("myCustomHeader", headerValue); |
或者我们也可以使用JQuery:
1 | $.ajax({ |
或者使用任意的 http client。例如在Java中,我们可以使用java.net.HttpURLConnection
发送标准或者自定义的请求头:
1 | URL obj = new URL(theUrl); |