《图解http》读书笔记(二)

第六章 HTTP首部字段

通用首部字段

1.Cache-Control

请求指令:(请求头里面带Cache-Control时的指令)

指令 参数 说明
no-cache 强制向源服务器再次验证

no-store

不缓存请求或响应的任何内容
max-age=[秒] 必须

Cache-Control:max-age=600 

//600s即10分钟,则表示如果缓存超过10分钟需要再去去向服务器请求,未超过直接使用缓存

max-stale 可省略 接收过期的响应。无参数值则客户端永远接收响应;设置参数值,则处于max-stale指定时间内,客户端也接收响应
min-fresh=[秒] 必须

min-fresh=60s 缓存在60s内过期,则不可作为响应返回

no-transform 代理不可更改实体主体的媒体类型
only-if-cached 从缓存获取资源。
缓存服务器不会向源服务器发请求。如果缓存服务器无资源,则返回504
cache-extension

-

新指令标记

响应指令:(响应头里面带Cache-Control时的指令)

指令 参数 说明
public 可向任意方提供响应的缓存
private 可省略 仅向特定用户返回响应
no-cache 可省略 缓存前必须确认资源有效性;
no-cache:Location,如果no-cache指定了具体的参数值,location不能使用缓存
no-store 不缓存请求或响应的任一部分
no-transform 代理不可更改实体主体的媒体类型
must-revalidate 缓存服务器必须再次向源服务器验证,如果无法联通源服务器,则返回504状态码

proxy-revalidate

再次验证资源的有效性

max-age=[秒]

必须

Cache-Control:max-age=600 

//600s即10分钟,10分钟内缓存服务器无需向服务器去确认

s-maxage=[秒] 必须 与max-age功能相同,不同的是s-maxage只适用于供多位用户使用的公共缓存服务器
cache-extension

-

新指令标记

2、Connection

参数 说明

Connection

控制代理不再转发的首部字段
例如:Connection:Upgrade ,代理转发请求时会删除首部字段Upgrade再转发请求

Connection

Keep-Alive

长连接,(http1.1默认都是长连接)

客户端发送Connection:Keep-Alive
服务器端会加上Keep-Alive字段返回响应,像这样:
Keep-Alive:timeout=10,max=500
Connection:Keep-Alive

Close

服务器端明确想断开连接
通用首部字段 参数 说明

Date

Tue,03 Jul 2014 04:40:59 GMT  

这种日期时间格式

创建http报文的日期和时间

Pragma

no-cache

1.0的向后兼容,不返回缓存的资源

和Cache-Control:no-cache的意思相同,为了兼容,通常会写成这样:

Cache-Control:no-cache

Pragma: no-cache

Trailer

报文主体后记录了哪些首部字段

Tranfer-Encoding

chunked/compress/deflate/gzip/identity

传输报文主体时采用的编码方式

Upgrade

例如:TLS/1.0 监测协议是否可使用更高版本
注:Upgrade首部字段产生的Upgrade对象仅限于客户端和临接服务器之间,所以使用时,要加上Connection:Upgrade 。(即再次转发时,删除Upgrade字段)

Via

追踪客户端与服务器之间报文的传输路径。报文在经过代理或网关时,会先在首部字段Via中附加该服务器的信息再进行转发

Warning

[警告码] [警告的主机:端口号] “[警告内容]” ([日期时间])

与缓存相关的警告

请求首部字段

请求首部字段 参数 说明

Accept

例如: text/html,q=0.3,text/plain 用户代理可处理的媒体类型和优先级
常见的媒体类型:
文本文件:text/html,text/plain, text/css …
图片:image/jpeg,image/png...
二进制文件:
application/octet-stream

Accept-Charset

用户代理支持的字符集以及优先级
Accept-Encoding

gzip/deflate/compress等

用户代理支持的内容编码和优先级

Accept-Language

例如:zh-cn,zh;q=0.7,en-us,en;q=0.3

用户代理能够处理的自然语言集合优先级

Authorization

用户代理的认证信息

Expect

例如100-continue 用户代理期望的某种特定行为,
服务器无法理解改参数值而导致错误时,返回417

From

用户的电子邮箱

Host

主机名和端口号;
http1.1规范内唯一一个必须包含的请求首部字段

If-Match

string类型

If-Match === ETag时正常处理请求,否则返回412

If-Modified-Since

日期格式 询问服务器该时间之后,所请求的资源是否更新,更新则返回新的资源,反之,返回304

他的值来源于服务器端返回的Last-Modified

If-None-Match

string类型

与If-Match作用相反,当If-None-Match不等于ETag时,处理请求

If-Range

string类型

If-Range的值与ETag或时间一致时,作为范围请求处理,否则返回全部资源

If-UnModified-Since

日期格式

与If-Modified-Since作用相反,当资源未更新,处理请求,否则返回412

Max-Forwards

number类型

可经过的服务器的最大数目

Proxy-Authorization

服务器认证所需信息

Range

例如:bytes=5001-10000 范围资源请求

Referer

url,例如:http://www.hacke.jp/ 请求是从哪个web页面发起的

TE

例如:gzip,deflate;q=0.5 客户端能够处理的传输编码方式和相对优先级

User-Agent

创建请求的浏览器和用户代理名称等信息

响应首部字段

响应首部字段 参数 说明

Accept-Ranges

bytes/none 服务器端可处理范围请求/不可处理范围请求

Age=[秒]

number类型 源服务器在多久前建立了响应;如果是缓存服务器,则Age值为缓存服务器发起认证到认证完成的时间。

ETag

实体唯一性标识。
强ETag:实体发生任何细微的改变都会更新ETag;
弱ETag: 资源发生根本改变时更新ETag

Location

引导访问某个与请求URI位置不同的资源,
该字段会3xx的响应,提供重定向的URI,几乎所有的浏览器在接收到包含Location的响应后,都会强制性的对已提示的重定向的资源进行访问。

Proxy-Authenticate

 把由代理服务器所要求的认证信息发给客户端(该认证发生在客户端与代理之间)

Retry-After

number或者日期 告知客户端多久后再发请求,字段值可为日期时间或秒数。
主要配合503 和3xx一起使用

Server

告知客户端当前服务器上安装的http服务器应用程序信息
Vary 字段 例如:源服务器返回给代理服务器的首部字段包含Vary:Accept-Language ,则客户端请求中,Vary字段值为Accept-Lanuage时,代理服务器才返回响应,否则像源服务器发起请求
WWW-Authenticate 用户http访问认证,告知客户端适用于访问请求URI所指定资源的认证方案。

实体首部字段

实体首部字段 参数 说明

Allow

HTTP的方法,例如GET,POST等

告知客户端能支持请求资源的所有的HTTP方法

Content-Encoding

告知客户端服务器对实体的主体部分选用的内容编码方式

Content-Language

告知客户端,实体主体使用的自然语言

Content-Length

实体主体的大小,单位是字节

Content-Location

URI

报文主体部分对应的URI

Content-MD5

一串由MD5算法生成的值 检查报文主体在传输过程中是否保持完整

Content-Range

例如:bytes 5001-10000/10000 返回的实体的哪个部分符合范围请求

Content-Type

实体主体内对象的媒体类型
Expires 日期类型 资源失效日期

Last-Modified

日期类型 资源最后修改时间  精确到秒

Set-Cookie

服务器端返回的Cookie

Cookie

客户端请求发送的Cookie

猜你喜欢

转载自blog.csdn.net/Smallsun_229/article/details/81811933