前言:
http协议作为Web通信的重要协议,完成了从客户端到服务端等一系列运作流程。
《图解HTTP》一书详细介绍了http协议的原理及应用,书中语言通俗易懂,图片生动传神,是非常好的入门教材。
本人最近在研究python爬虫,自然会用到很多http的知识,读完这本书的前几章后收货很大,遂将自己的想法总结一下。
《图解HTTP》一书免积分下载:点击下载pdf
第一章:
- HTTP协议是应用层协议,其依赖于TCP/IP协议族才能进行通信。
- 与http关系密切的协议有:IP,TCP,DNS。
- 应理解TCP/IP协议族基本协议的工作机制。
第二章:
- 向服务器请求资源时,要指定请求方法。针对不同的请求方法,服务器做出相应的反馈。
常用的请求方法有:GET,POST。具体应用可参阅python的request库的使用。 - 服务器会返回相应的状态码,常用的状态码有: 2xx – 成功 3xx – 重定向 4xx – 客户端错误 5xx – 服务器错误
第三章:
- http报文结构:报文首部/空行/报文主体,其中我们最关系的就是报文首部
- 一般,请求报文只有报文首部,响应报文有报文首部和报文主体
第四章:
返回结果状态码详解
第五章:
消息数据转发的过程:经过代理,网关,隧道等
第六章:
http首部字段的含义:
通用首部字段:
请求头:Cache-Control :
no-cache #不要缓存服务器中的资源,直接从原服务器拿资源
max-age= #若缓存资源时间比max-age小,接收缓存资源。若max-age=0,从原服务器拿资源响应头:Cache-Control :
max-age = 123456 # 资源缓存的最长时间Connection: keep-alive # 持久化连接
Date:# 创建http报文的日期
Transfer-Encoding: chunked # 传输报文主体时采用分块传输方式
请求首部字段:
Accept:’text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8’
#通知服务器,浏览器能处理的媒体类型及相对优先级Host:# 必须指定的字段,请求主机名
Referer:# 请求资源的URL
User-Agent: # 将创建请求的浏览器信息告知服务器
响应首部字段:
Accept-Ranges: bytes # 服务器支持以字节为单位的请求范围
Age:# 告知客户端,源服务器多久前建立了响应
Etag: # 资源的唯一性标识
Location: # 重定向到指定URL
Server: # 告知客户端HTTP服务器的信息
实体字段首部:
Allow:# 告知客户端支持的请求方法(GET,Post等)
Content-encoding/language/length/range/type: # 一系列跟主体报文处理相关的字段
Expires: # 告知客户端资源失效的日期
Last-Modified:# 资源最后修改的时间