报文(message)
是 HTTP 通讯中的基本单位,由 8 位组字节流(octet sequence,
其中 octet 为 8 个比特)组成,经过 HTTP 通讯传输。
实体(entity)
做为请求或响应的有效载荷数据(补充项)被传输,其内容由实
体首部和实体主体组成。
HTTP 报文的主体用于传输请求或响应的实体主体。
一般,报文主体等于实体主体。只有当传输中进行编码操做时,实体
主体的内容发生变化,才致使它和报文主体产生差别。
303该状态码表示因为请求对应的资源存在着另外一个 URI,应使用 GET
方法定向获取请求的资源。
303 状态码和 302 Found 状态码有着相同的功能,但 303 状态码明确
表示客户端应当采用 GET 方法获取资源,这点与 302 状态码有区
别。
304 服务器端容许请求访问资源,但未知足条件的状况下。
307相似302,可是不容许从post方法变成get方法。
代理
每次经过代理服务器转发请求或响应时,会追加写入 Via 首
部信息。
使用代理服务器的理由有:利用缓存技术(稍后讲解)减小网络带宽
的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要
目的。
缓存代理和透明代理
透明代理的意思是客户端根本不须要知道有代理服务器的存在,会改变你的request fields(报文),并会传送真实IP。
缓存代理是代理服务器上会将真实服务器的信息缓存一段时间,在缓存的时间范围内,当下一次客户端访问代理服务器的时候,直接访问的是代理服务器上面的缓存信息。这样就会加速访问速度。浏览器
HTTP首部
当 HTTP 报文首部中出现了两个或两个以上具备相同首部字段名时
会怎么样?这种状况在规范内还没有明确,根据浏览器内部处理逻辑
的不一样,结果可能并不一致。有些浏览器会优先处理第一次出现的
首部字段,而有些则会优先处理最后出现的首部字段。缓存
主要分为下面几个部分:通用首部,请求首部,响应首部和实体首部。服务器
首部字段DNT属于HTTP请求首部,其中DNT是Do Not Track的简称,意为拒绝我的信息被收集,是表示拒绝被精准广告追踪的一种方法,0为赞成被追踪,1为拒绝被追踪网络
通用首部字段
1.Cache-control
!!事实上 no-cache 表明不缓存过时的资源,缓存会向源服务器进行有效期确认后处理资源,也许称为 do-notserve-from-cache-without-revalidation 更合适。no-store 才是真正地不进行缓存,请
读者注意区别理解。
!!s-maxage 指令的功能和 max-age 指令的相同,它们的不一样点是 smaxage
指令只适用于供多位用户使用的公共缓存服务器 2。也就是
说,对于向同一用户重复返回响应的服务器来讲,这个指令没有任何做用。
2.Connection 首部字段具有以下两个做用。
控制再也不转发给代理的首部字段
管理持久链接
3.Date 代表建立 HTTP 报文的日期和时间
4.Pragma 客户端明确表示不接受缓存资源,针对的是全部的中间服务器(结合np-cache一块儿使用)
5.Trailer 会事先说明在报文主体后记录了哪些首部字段。该
首部字段可应用在 HTTP/1.1 版本分块传输编码时。
6.Transfer-Encoding 仅仅对于分块传输编码有效。
7.Upgrade是否使用更高的版本进行通讯。同时须要指定connection:Upgrade Upgrade:TLS1.1
8.Via首部字段 Via 不只用于追踪报文的转发,还可避免请求回环的发生。
因此必须在通过代理时附加该首部字段内容。trace方法一块儿使用。
9.Warning 告知用户一些与缓存相关的问题的警告ide