简介http的请求和响应学习笔记
HTTP(HyperText Transfer Protocol), 简单的说,就是指导浏览器和服务器如何进行沟通的一种协议。学术一点的解释就是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息。
根据HTTP标准,HTTP请求可以使用多种请求方法。HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。我们平时最常用的HTTP请求方法是GET和POST两种,GET请求就是请求指定的页面信息,并返回你所请求的内容,POST就是向指定资源提交数据进行处理请求,例如提交表单或者上传文件,POST请求可能会导致新的资源的建立和/或已有资源的修改。
一次完整的HTTP请求包括7个步骤,1.在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器通过TCP建立连接,2.Web浏览器向Web服务器发送请求命令,3. Web浏览器发送请求头信息, POST / HTTP/1.1这样,4.服务器会客户机回送应答, HTTP/1.1 200 OK ,5.Web服务器发送应答头信息 ,6. Web服务器向浏览器发送数据 ,你就开始下载网页 ,7. Web服务器关闭TCP连接 。
这里我们先说下cURL命令,cURL是一个利用URL语法在命令行下工作的文件传输工具,所以在命令行里,我们经常使用cURL来进行HTTP的请求。先来说下cURL的基本用法: $curl http://www.baidu.com ,执行后,www.baidu.com 的html就会显示在屏幕上了,我们就用curl命令向百度的服务器发送了一次请求,然后服务器返回了我们请求的页面。
如果你想更加详细的了解curl的命令,这里我推荐一个网站http://www.linuxdiyf.com/linux/2800.html;我们一般会用到一些命令像-v,-s,-X等命令,-v就是显示版本号,-s就是说我的这条命令不想看到进度条之类的,你返回网页就行了;-X就是用来指定是什么命令 比如想发起一次POST请求就需要在命令里加上-X POST;下面是两个使用的例子:
$curl -s -v -- "https://www.baidu.com"
$curl -X POST -d "1234567890" -s -v -- "https://www.baidu.com"
请求的内容请求最多包含四部分,最少包含三部分(也就是说第四部分可以为空,如上图)。第三部分永远都是一个回车(\n),命令有 GET POST PUT PATCH DELETE HEAD OPTIONS 等,这里的路径包括「查询参数」,但不包括「锚点」如果你没有写路径,那么路径默认为 /,第 2 部分中的 Content-Length标注了第四部分的长度,Content-Type 标注了第 4 部分的格式。
请求了之后,应该都能得到一个响应,除非断网了,或者服务器宕机了。响应的格式和请求的格式差不多,
第一部分是协议/版本号 状态码 状态解释
第二部分就如图 Key1: value1 Content-Length: 17931 Content-Type: text/html
第三部分就是回车 \n
第四部分就是要下载的内容 (内容就是 。。。吧啦吧啦太长了 这里就不截图了)
这样我们就完成了一次HTTP的请求和响应,实际上我们只是运行了一条$curl命令,虽然理解起来并不是很容易,但实际操作还是蛮简单的。我们用浏览器访问网页就是浏览器帮我们进行了一次HTTP的请求,那我们如何在浏览器中查看http的请求和响应?
以Chrome为例,首先我们右键-点击审查或者直接F12,然后点开NetWork,输入网址www.baidu.com,在 Network 点击name为www.baidu.com的这一条,headers下面查看 request,点击「view source」就可以查看我们发送请求的源代码,这样可以看到请求的前三部分了,如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到。查看响应的方式和请求一样只是查看的内容从request换成response,这样你会看到响应的前两部分,查看 Response 或者 Preview,你会看到响应的第 4 部分。