HTTP请求头域
host
host指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。
1. host可以使域名也可以是ip地址
2. 使用固定的url会有各种麻烦,因为会有host头域攻击问题,所以一般程序中通过程序自定义。
3. 利用HTTP host头攻击的技术包括密码重置污染和缓存污染
4. HTTP/1.1中host字段可以为空,HTTP/1.0中可以确实host字段
5. HTTP/1.1请求必须包含host,不然系统会返回400状态码
6. 因为http响应中不包含host字段,所以wireshark中http.host过滤到的都是请求包
referer
referer允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表。
1. referer可以记录访问的来源,统计访问量,可以用来防盗链
2. 如果指定的是部分uri地址,则该地址应该是相对地址
User-Agent
User-Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等
Cache-Control
Cache-Control指定请求和响应遵循的缓存机制。
- 请求时的缓存指令包括
no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached - 响应消息中的指令包括
public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age
在以下这些情况下这些指令的作用:
1)打开新窗口
值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器,而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器.
2)在地址栏回车
值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。
值为no-cache,那么每次都会访问。
值为max-age,则在过期之前不会重复访问。
3)按后退按扭
值为private、must-revalidate、max-age,则不会重访问,值为no-cache,则每次都重复访问。
4)按刷新按钮
- 无论为何值,都会重复访问,Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份
- 通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问: Expires: Fri, 31 Dec 1999 16:00:00 GMT
- 禁止页面在IE中缓存
http响应消息头部设置:
CacheControl = no-cache
Pragma=no-cache
Expires = -1 - 如果服务器上的网页经常变化,可以把Expires 设置为-1,表示立即过期。如果一个网页每天凌晨1点更新,可以把Expires设置为第二天的凌晨1点。
- 当HTTP1.1服务器指定CacheControl = no-cache时,浏览器就不会缓存该网页
- 旧式 HTTP 1.0 服务器不能使用 Cache-Control 标题,为了向后兼容 HTTP 1.0 服务器,IE使用Pragma:no-cache 标题对 HTTP 提供特殊支持。
Date
Date头域表示消息发送的时间