关于HTTP
- HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
- HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。
- HTTP协议工作于客户端-服务端架构之上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
Server+Client+ HTTP
- 浏览器负责发起请求
- 服务器在 80 端口接收请求
- 服务器负责返回内容(响应)
- 浏览器负责下载响应内容
-
HTTP 的作用就是指导浏览器和服务器如何进行沟通。
HTTP——请求消息Request
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
Get请求例子:
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Zhang: xxx
第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本
-
GET
说明请求类型为GET
,/
为要访问的资源, 该行的最后一部分说明使用的是http1.1版本。
第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息 - 第二行起为请求头部,
HOST
将指出请求的目的地。User-Agent
,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础。该信息由你的浏览器来定义,并且在每个请求中自动发送等等。Zhang:xxx
无意义,可有可无。
第三部分:空行,请求头部后面的空行是必须的 - 即使第四部分的请求数据为空,也必须有空行。
第四部分:请求数据也叫主体,可以添加任意的其他数据。 - 这个例子的请求数据为空。
POST请求例子:
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Zhang: xxx
Content-Length: 10
Content-Type: application/x-www-form-urlencoded
1234567890
- 第一部分:请求行,第一行明了是post请求,以及http1.1版本。
- 第二部分:请求头部,第二行至第七行。
- 第三部分:空行,第八行是空行。
- 第四部分:请求数据,第九行。
HTTP——响应消息Response
一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
HTTP/1.1 302 Found
Connection: Keep-Alive
Content-Length: 17931
Content-Type: text/html
Date: Tue, 10 Oct 2017 09:19:47 GMT
Etag: "54d9749e-460b"
Server: bfe/1.0.8.18
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
后面太长,省略了……
第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
- 第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为302,状态消息为(Found)
第二部分:消息报头,用来说明客户端要使用的一些附加信息
- 第二行到第六行为消息报头,
Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8
第三部分:空行,消息报头后面的空行是必须的
第四部分:响应正文,服务器返回给客户端的文本信息。
- 空行后面的html部分为响应正文。
如何使用Chrome开发者工具查看 HTTP 请求内容以及响应内容
第一步:打开 Network
第二步:输入网址
第三步:选中第一个响应
第四步:在Headers栏点击Response Headers,或点击Request Headers。
第五步:点击「view source」,点击「view source」,点击「view source」就可以了。
查看 Response 或者 Preview,你会看到响应的第 4 部分
如何使用Curl命令
curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。
参考文档