HTTP 标准
HTTP协议(HyperText Transfer Protocol, 超文本传输协议)用于从WWW服务器传输超文本到本地浏览器的传送协议。 使浏览器更加高效,减小网络传输。
HTTP请求过程
HTTP协议都是客户端发起请求,服务器回送响应。 是一种无状态的协议,同一客户端的这次请求和撒谎给你次请求没有对应关系。 一次HTTP操作称为一个事务,可分为四步:
- 首先客户端和服务端需要创建连接,例如点击某个超链接,HTTP的工作就开始了。
- 建立连接后,客户端发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL),协议版本号,后面是MIME信息,包括请求修饰符,客户机信息和可能的内容。
- 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号,一个成功或者错误的代码,后边是MIME信息,包括服务器修饰符,实体信息和可能的内容。
- 客户端接受服务器所返回的信息,通过浏览器将信息显示再用户的显示器上,然后客户端和服务端断开连接
如果其中一步出现错误,那么产生错误的信息将返回到客户端,再显示屏输出,这些过程都是由HTTP协议自己完成的。
HTTP头部信息
由众多的头域组成,每个头域由一个域名,冒号,域值三部分组成。 域名是大小写无关的,域值前面可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。 例如 通过浏览器访问博客园首页是,打开开发者工具,里面可以监控整个HTTP访问的过程。
常见普通报头
Cache-Control 用于指定缓存指令 Date 表示消息产生的日期和时间 Connection 允许发送用于指定连接的选项,例如指定连接是连续,或者指定是 close,通知服务器响应完成后,关闭连接
常见请求报头
Accept 用于指定客户端接受那些类型的信息 Accept_Charset 用于指定客户端接受的字符集 Accept_Encoding 用于指定可接受的内容编码 Accept_Language 用于指定一种自然语言 Authorization 作用证明客户端有权查看某个资源 Host 用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL 中提取出来 User_Agent 允许客户端将它的操作系统,浏览器和其他属性告诉服务器
常见响应报头
Location 用于重定向接收者到一个新的位置 Server 包含了服务器用来处理请求的软件信息,和User_Agent请求报头域是相对的。 WWW-Authenticate 此响应报头域必须被包含在401(未授权的)响应信息中,客户端收到401响应消息,并发送Authenticate报头域请求服务器对其进行验证时。
常见实体报头
Content-Encoding 被用作媒体类型的修饰符,它的值只是了已经被应用到实体正文的附加内容的编码 Content-Language 描述了资源所用的自然语言 Content-Length 用于指明实体正文的长度,以字节方式存储的十进制数来表示 Content-Type 用于指明发送给接收者的实体正文的媒体类型 Last_Modified 用于指示资源的最后修改日期和时间 Expires 给出响应过期的日期和时间
Cookie状态管理
Cookie和Session都是用来保存状态信息,都是保存客户端状态的机制,都是为了解决HTTP无状态的问题所做的努力。对于爬虫开发来说,更加关注Cookie。 Cookie将状态保存在客户端,Session将状态保存在服务器端。 Cookie是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。网络服务器用HTTP头向客户端发送Cookie,浏览器则会解析这些Cookie并将它们保存为一个本地文件,它自动将同一服务器的任何请求绑定上这些Cookie Cookie的工作方式:服务器给每个Session分配一个JSESSIONID,并通过Cookie发送给客户端。当客户端发起新的请求的时候,将在Cookie头中携带这个JSESSIONID。这样服务器能找到这个客户端对应的Session
|