HTTP协议学习总结二

客户端经过请求头,告诉服务器要请求的资源,同时还会附带一些其余的信息,那么这些请求信息想表达什么意思呢?web


HTTP经常使用请求头详解

chrome请求oschina时请求头信息

上图能够看到,chrome浏览器就是一个客户端,在请求oschina主页资源时,HTTP请求中所包含的请求头信息:算法

  1. Accept:告诉服务器,客户端能够接受的资源类型,能够是一个类型,也能够是多个类型,多个类型间用逗号分隔开 特殊的*/*表示什么类型均可以;q表示但愿返回资源的级别,没有的话默认是1,显示写的话一般在类型后用分号分开,每每是一个键值对的形式,如q=0.8。一般服务器会响应一个Content-type的响应头信息。chrome

  2. Accept-Encoding:告诉服务器,客户端支持什么样的压缩算法,能够为一个值或多个值,用逗号分开,经常使用的压缩算法有gzip。服务器在收到这个字段后,会检查服务器是否支持这个算法,若是支持,就会在发回响应信息前,对资源进行压缩,这样能够减少响应资源的大小。一般服务器会响应一个Content-Encoding:gzip的响应头信息。浏览器

  3. Accept-Language:告诉服务器,客户端但愿服务器返回的语言格式,对于支持国际话的服务端来讲,这个字段很重要,能够经过这个字段,返回不一样语言的资源缓存

  4. Cache-Control:这个值告诉服务器客户端但愿的缓存策略,若是出如今客户端的请求头中,值每每是max-age=0,告诉服务器,客户端是不缓存服务器资源的安全

  5. Connection:客户端发送的值每每是keep-alive,这个值告诉服务器本身打开的是一个长tcp链接,服务器接受到这个值后,若是接受这个长链接,就会返回Connection:keep-alive,这样当客户端再有请求发送时,就会重用这个tcp链接;若是不接受长链接就会返回Connection:close。正确的理解keep-alive必须对tcp/ip协议有必定的了解服务器

  6. Cookie:这个值是服务器存储在客户端的数据,cookie是一组键值对,用;分隔开。Cookie有不少重要的知识点,对web开发人员来讲极其重要,之后会单独来讲明。cookie

  7. Host:这个值对应的是服务器域名或者ip地址。网络

  8. User-Agent:这个值描述了客户端的详细信息。若是你想写一个简单的爬虫软件,没有这个字段的话,是会被一些服务器拦截的(曾经爬网易的时候就遇到过这个问题)。tcp

上面的这些是chrome请求oschina时的请求头信息,HTTP协议规定的请求头固然远远不止上面说的这些,下面咱们再说一些比较经常使用的请求头:

  1. Referer:当点击某个网页的的a标签时或者表单提交时,会带上这个值,告诉服务器,这个请求时从哪一个页面来的,这样服务器经过这个值就能够统计流量都是从哪里来的,一些广告服务提供商就是靠这个值来收费的。

  2. if-modified-since:这个值是服务器上次响应时请求时发送给客户端的date时间,若是服务器看到这个字段,若是在这段时间没有修改过资源,服务器就会返回304 not modified,若是修改了,就返回资源。

  3. if-none-match:这个值的意义跟if-modified-since同样,也是一个条件请求,但这个值比上面的值有加强效果,由于文件即便修改时间变了,不必定说明资源变了。

  4. Range:能够告诉服务器,只请求资源的一段,值能够是这样bytes=100-1000,经过这个,能够作到断点下载。

  5. Authorization:当服务器资源须要权限才能访问时,客户端会带上这个请求头信息,将认证信息经过这个字段传递给服务器,一般这个值会采用base64编码,将username:password类型的值编码后经过网络传递给服务器,由于base64编码是可逆的,不够安全,因此如今的安全控制不多用这种方式,通常是用https。

相关文章
相关标签/搜索