一、HTTP协议概述
1、什么是 HTTP ?
HTTP 就是目前使用最广泛的Web应用程序使用的基础协议,例如,浏览器访问网站, 手机App访问后台服务器,都是通过 HTTP 协议实现的。 HTTP 是 HyperText Transfer Protocol 的缩写,翻译为超文本传输协议,它是基于 TCP 协议之上的一种请求-响应协议。
HTTP 请求的格式是固定的,它由 HTTP Header 和 HTTP Body 两部分构成。第一行 总是 请求方法 路径 HTTP版本 :例如, GET / HTTP/1.1 表示使用 GET 请求,路径 是 / ,版本是 HTTP/1.1 。 后续的每一行都是固定的 Header: Value 格式,我们称为 HTTP Header ,服务器依 靠某些特定的 Header 来识别客户端请求,例如:
- Host :表示请求的域名,因为一台服务器上可能有多个网站,因此有必要依靠 Host 来识别请求是发给哪个网站的;
- User-Agent :表示客户端自身标识信息,不同的浏览器有不同的标识,服务器依 靠 User-Agent 判断客户端类型是 IE 还是 Chrome ,是 Firefox 还是一个 Py thon 爬虫;
- Accept :表示客户端能处理的 HTTP 响应格式, */* 表示任意格式, text/* 表示任意文本, image/png 表示PNG格式的图片;
如果是 GET 请求,那么该 HTTP 请求只有 HTTP Header ,没有 HTTP Body 。如果是 POST 请求,那 么该 HTTP 请求带有 Body ,以一个空行分隔。一个典型的带 Body 的 HTTP 请求如下:
POST /login HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
username=hello&password=123456
POST 请求通常要设置 Content-Type 表示 Body 的类型, Content-Length 表示 Body 的长度,这样 服务器就可以根据请求的 Header 和 Body 做出正确的响应。
此外, GET 请求的参数必须附加在 URL 上,并以 URLEncode 方式编码,例如: http://www.exampl e.com/?a=1&b=K%26R ,参数分别是 a=1 和 b=K&R 。因为 URL 的长度限制, GET 请求的参数不能太 多,而 POST 请求的参数就没有长度限制,因为 PO