您的位置:首页 > 理论基础 > 计算机网络

HTTP协议学习总结二

2014-09-18 22:17 363 查看
摘要: 学习HTTP协议,最重要的是理解客户端与服务器沟通的语言。

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

HTTP常用请求头详解



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

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

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

Accept-Language:告诉服务器,客户端希望服务器返回的语言格式,对于支持国际话的服务端来说,这个字段很重要,可以通过这个字段,返回不同语言的资源

Cache-Control:这个值告诉服务器客户端希望的缓存策略,如果出现在客户端的请求头中,值往往是max-age=0,告诉服务器,客户端是不缓存服务器资源的

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

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

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

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

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

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

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

if-none-match:这个值的意义跟if-modified-since一样,也是一个条件请求,但这个值比上面的值有增强效果,因为文件即使修改时间变了,不一定说明资源变了。

Range:可以告诉服务器,只请求资源的一段,值可以是这样bytes=100-1000,通过这个,可以做到断点下载。

Authorization:当服务器资源需要权限才能访问时,客户端会带上这个请求头信息,将认证信息通过这个字段传递给服务器,通常这个值会采用base64编码,将username:password类型的值编码后通过网络传递给服务器,因为base64编码是可逆的,不够安全,所以现在的安全控制很少用这种方式,一般是用https。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HTTP协议