目录
一、代理
1、定义
处于通信链路的中间位置,转发上下游的请求和响应,具有双重身份。
2、相关字段
1)Via
通用字段,请求、响应头都可以出现
每当报文经过一个代理节点,代理服务器就会把自身的信息(主机名或域名)加载到字段末尾。
示例:
Via: proxy1,proxy2
表示报文在通信链路传输经过了proxy1,proxy2两个代理
2)X-Forwarded-For
每当经过一个节点,就将请求方的IP地址追加到后面。(注意与Via的区别)
所以,字段的最左边的IP地址就是客户端的地址。
3)X-Real-IP
只记录客户端IP地址,没有中间的代理信息。
3、简述代理协议
示例:
PROXY TCP4 1.1.1.1 2.2.2.2 5555 80 \r\n
协议名 TCP版本 请求方IP 应答方IP 请求方端口号 应答方端口号
作用:
能在不改动原始报文的情况下传递客户端的真实IP。
二、缓存代理
1、相关字段
1)源服务器的缓存控制
在Cache-control(上篇博文有总结)的基础上,新增了一些属性。
1.private 和 public 属性 :区分了客户端上的缓存和代理上的缓存
private:只能在客户端保存,不能再代理上与人共享。
public:缓存完全开放。
2.proxy-revalidate:要求代理缓存过期后必须验证,但是向代理服务器验证即可。
注意:区分must-revalidate -> 必须回源服务器验证。
3.S-maxage: 在代理上能存放多久。
注意:客户端仍然使用"max-age".
4.no-transform:代理专用。
不允许代理对花奴才能数据进行处理。
注意:源服务器设置完Cache-Control后必须加上"Last-Modified" 或 "ETag" 字段。
2)客户端的缓存控制
在Cache-control(上篇博文有总结)的基础上,新增了一些属性。
1.max-stale:可接受代理已过期的缓存,但不能过期太久,超过x秒就不要。
2.min-fresh:要求缓存必须有效,而且必须在x秒之后还有效。
示例:
max-age=5,max-stale=2
表示过期2秒内仍然有效。
max-age=10,min-fresh=1
若此时已过5秒,则5+1 < 10,该缓存仍然有效。
3.Only-If-Cached:只接受代理缓存的数据,不接受源服务器的响应。
3)其他字段
Purge : 缓存清理
可以自定义 PURGE的请求方法,删除缓存数据。
参考资料:
1.《HTTP权威指南》
2.极客时间-《透视HTTP协议》专栏-罗剑锋