Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

http学习(五):http首部字段 #18

Open
Jmingzi opened this issue Dec 8, 2017 · 0 comments
Open

http学习(五):http首部字段 #18

Jmingzi opened this issue Dec 8, 2017 · 0 comments

Comments

@Jmingzi
Copy link
Owner

Jmingzi commented Dec 8, 2017

图解http第6章

  • HTTP/1.1
请求发出 首部字段名 说明
Cache-Control 控制缓存行为
Date 创建报文时间
Pragma 报文指令,1.1之前的指令,此处作向下兼容用,与Cache-Control作用一致
Transfer-Encoding 报文主体的传输编码方式
Via 代理服务器的相关信息
Accept 用户代理可处理的媒体类型
Accept-Charset 优先的字符集
Authorization web认证信息
Host 请求资源所在的服务器
If-Match 比较实体标记
If-modified-Since 比较资源的更新时间
Proxy-Authorization 代理服务器要求的认证信息
Range 实体的直接范围请求
Referer 对请求中URI的原始获取方
User-Agent 客户端的信息
实体首部字段名 说明
Allow 资源可支持的http方法
Content-MD5 实体主体的报文摘要
Content-Type 实体主体的媒体类型
Expires 实体主体的过期时间
Last-Modified 资源最后的修改时间
  • 非HTTP/1.1首部字段

Cookie、Set-Cookie

  • 端到端首部
    必须保存在由缓存生成的响应中,且一定会被转发

  • 逐跳首部字段
    只对单次转发有效,会因通过缓存或代理而不再转发

字段名 说明
Connection 逐跳首部连接管理
Keep-Alive 是否长链接

字段详解

  • Cache-Control 参数用逗号分隔
// 1. 缓存请求指令

Cache-Control: no-cache, no-store, max-age=100, min-fresh=100, only-if-cached, no-transform
// no-cache:不缓存过期资源,每次请求都强制向服务器再次验证一遍,即使是缓存的资源
// no-cache需要服务端在返回资源时指定,资源才不会被缓存,否则拿到的都是缓存资源
// 也就是说这个指令一般用在资源响应时才有效

// no-store:不缓存请求或响应的任何内容,真正的不缓存。
// max-age:缓存最大的时间,单位秒,在改时间内都直接拿缓存资源,不请求服务器。
// 当max-age:0时,则每次都将请求服务器

// min-fresh:期望在指定时间内响应仍有效
// only-if-cached:从缓存资源获取
// no-transform:代理不可更改媒体类型

// 2. 缓存响应指令 
// 在前端开发中,一般都是作为缓存请求方
  • Connection
    • 控制不再转发的代理的首部字段
    • 管理持久连接
// 意思是Connection可指定哪些字段,代理服务器不转发。
Connection:Content-Type
// 代理都不会转发Content-Type字段

我们可以看到,在浏览器请求中
d7cf162d-55f0-48c8-8b74-a97cb9a1f54c
服务器明确指出断开长连接

Connection: close
  • q指定权重,默认q=1.0
Accept: text/plain;q=0.3, text/text/html=0.4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant