首先请求报文包括请求行、请求头、请求体
请求行:请求方法 路径 HTTP版本
不要混淆
请求头
- Content-Type : 请求的与响应体对应的MIME信息,就是我从服务器里面想获取什么类型的信息。
如果想获取json :Content-Type:application/json
如果想获取html : Content-Type : text/html
如果想获取jpg : Content-Type:image/jpg
-
Cookie : Cookie
-
Accpet:告诉服务端,客户端接收什么类型的响应
-
Referer:表示这是请求是从哪个URL进来的
-
Cache-Control:对缓存进行控制,如一个请求希望响应的内容在客户端缓存一年,或不被缓可以通过这个报文头设置
-
User-Agent :告诉服务器,客户端使用的操作系统、浏览器版本和名称
缓存相关 :
HTTP1.0
-
If-Modified-Since : 表示如果在…之后服务器的文件被修改了,就执行更新操作(叫服务器重发文件)
(使用流程:
①客户端第一次请求服务器,服务器发来一个响应报文,响应报文包含页面、Last-Modified,并附上一 个时间A;
②然后客户端浏览器就会缓存下来这个页面,下一次就不用请求服务器了
③但是服务器的页面有时候就会改变,这样,就需要客户端每隔一段时间,看看自己的缓存的页面是否是最新的
④这样客户端就发一个请求,里面包含If-Modified-Since,并附上时间A,这样就去看看,自从上次获取
页面以来,服务器有没有改变了页面)
Http1.1
-
if-Match : 表示如果匹配了,就…
(使用流程:
①客户端第一次请求服务器,服务器发来一个响应报文,响应报文包含页面、Etag,
Etag跟这个页面关联,相当于这个页面的身份证
②然后客户端浏览器就会缓存下来这个页面,下一次就不用请求服务器了
③但是服务器的页面有时候就会改变,这样,就需要客户端每隔一段时间,看看自己的缓存的页面是否是最新的
④这样客户端就发一个请求,里面包含If-Match,并附上刚刚的Etag,这样就去看看,
我拥有的Etag和服务器的Etag是否一样,实质就是比较服务器的页面和我浏览器的页面有没有一样,
如果Etag不一样,服务器就需要重发页面
)
-
Range : 用于断点续传。假如服务器支持范围请求的话,你可以使用 Range 首部来生成该类请求。该首部指示服务器应该返回文件的哪一或哪几部分。就是文件太大,每次只传一点点。例子:Range: bytes=0-1023 请求文件的0-1023字节
-
if-Range : 是为了判断在断点续传过程中,服务器页面有没有改变。就是比如 客户端先用Range传了1024个字节,然后关浏览器了,过了一段时间,继续断点续传。但是,服务器的文件可能发生改变了,前面传的那些可能不正确了。这时,就需要服务器把前面的重新传一下。if-Range里面的值也是Etag,和if-Match的比较是一样的。
响应头的字段
Last-Modified:看上面
Expires :表示告诉浏览器,我这段时间