HTTP报文的头部信息内容其实有很多,每个都代表特定的设置,下面就罗列下常见的字段:
- Accept: 告诉web服务器自己接收什么媒体类型。
- Accept-Charset: 浏览器接收内容的字符集,通常是utf-8。
- Accept-Encoding: 浏览器接收的编码方法。例如指定是否压缩,若支持压缩的话支持压缩方式,具体如常见的Accept-Encoding: gzip, deflate.
- Accept-Language: 浏览器接收的语言。
- Accept-Ranges: Web服务器表明自己是否接受获取某个实体的一部分(比如文件的一部分)请求,这里主要用于部分文件的传输,bytes字段表示接受传输多大长度内容,none表示不接受。
- Allow: 设置服务器接受的请求的方法,例如GET、POST、PUT,如果不支持,则返回405。
- Authorization: 当客户端接收到来自web服务器的WWW-Authenticate响应时,后面可以用该头部来携带自己的身份验证信息给web服务器直接进行认证。
-
Cache-Control: 用来申明强缓存
no-cache: 不使用缓存实体,要求去web服务器去请求数据。
max-age: 设置的缓存过期的时间。
no-store: 不缓存。 -
Connection: 长连接(持续连接)相关设置。节省TCP连接时间开销。常用设置如下:
close: 告诉web服务器,在完成本次请求响应后断开连接,无需等待后续请求。
keep-alive: 保持连接一段时间,等待后续请求,如果浏览器请求保持连接,则头部表明需要web服务器保持连接的时长(以秒为单位),例如:keep-alive: 200。http1.1中会默认设置开启长连接。 - Content-Encoding: 与请求头的Accept-Encoding相互呼应,web服务器表明返回内容是按何种方式压缩,例如:Content-Encoding: gzip。
- Content-Language: 与请求头中的Accept-Language相呼应,告诉浏览器响应的媒体对象的语言。
- Content-length: Web服务器告诉浏览器请求内容的长度。
- Content-Range: Web服务器表明响应包含的部分对象的为整个对象的哪个部分。
- Content-Type: 与请求头的Accept相呼应,表明web服务器告诉浏览器相应内容的类型。
- Etag: 对象的标志值。一个文件如果被修改了,其Etag值也会被修改。Etag和Last-Modified都是设置的协商缓存。例如前一次请求某个js文件时获取了服务器相应传回来的Etag字段,当再次请求该文件时会在If-None-Match字段中带上Etag的值。web服务器会根据这个Etag值判断文件和先前比是否改变了。
- Expires: http1.1之前时代设置强缓存的字段。是web服务器告诉客户端的一个具体过期的时间点(服务器时间),需要客户端和服务端时间同步,若客户端时间不准确,可能现没有利用缓存的情况,所以http1.1中建议设置Cache-control。例如:Expires:Sat,23 May 2009 10:02:12 GMT。
- **Host: ** 客户端指定自己访问的web服务器的域名/IP地址及端口号。例如:Host: www.baidu.com。
- If-None-Match: 对应Etag,是客户端发送给服务端的。为上一次web服务器响应的Etag值。
- If-Modified-Since: 对应Last-Modified, 是客户端发送给服务器的,为上一次web服务器响应的Last-modified的值。