本文目标:对HTTP形成初步概念
背景:我曾多次看讲HTTP的文章,有些写得非常优秀,但看完之后总是记不住,不知道HTTP为何物,因此在这里粗浅的总结下HTTP基本知识,偏向于理解和记忆,不做深入探讨。
HTTP是什么?
HTTP——超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP),首先是一个协议,类似我们日常所说的约定、合同,是从服务器传输超文本到本地浏览器的传送协议,我个人更倾向于理解成服务器与浏览器之间的交流形式。
以下,我会以访问百度首页作为例子,说明如何在控制台查看请求(request)和响应(response)。
请求:
请求由四部分组成:
1,请求方法、URI、协议/版本
2,请求头
3,空行
4,请求体
在浏览器打开控制台(F12或者右键-检查),地址栏输入www.baidu.com,回车;
在控制台点击network选项;
在Headers里可以看到三个选项卡
点击view source;
至此,我们看到了对百度首页请求(结合 图HTTP请求与响应 查看),我们看到的是:
第一行:请求方法 路径 HTTP/版本号
第二行:请求首部字段(key:value)
注:空行看不到,此处无请求体
请求方法:
GET: 获取URL指定的资源;
POST:传输实体信息
PUT:上传文件
DELETE:删除文件
HEAD:获取报文首部,与GET相比,不返回报文主体部分
OPTIONS:询问支持的方法
TRACE:追踪请求的路径;
CONNECT:要求在与代理服务器通信时建立隧道,使用隧道进行TCP通信。主要使用SSL和TLS将数据加密后通过网络隧道进行传输。
路径:
提到路径就不得不提我们常说的网址(URL——Uniform Resource Locator,统一资源定位符)。它的标准格式如下:
[协议类型]://[服务器地址]:[端口号]/[资源层级UNIX文件路径][文件名]?[查询]#[片段ID],以上例子中 /ch/news_tech/ 就是路径,根据它,网站服务器可以作出不同的回应。(进一步了解,请到维基百科:URL)
请求首部字段:
用于补充请求的附加信息、客户端信息、对响应内容相关的优先级等内容。
空行:
空行的作用就是将请求中的第二部分和第四部分分开。
请求体:
一般只在POST方法中出现,用于上传内容,比如表单提交信息。
响应
1,状态行
HTTP/1.1 200 OK——协议/协议版本 状态码 状态描述
2,响应头
Content-Type:text/html——key:value
3,空行
将响应头和响应体分开
4,响应体
服务器对客户端的请求作出响应的主体部分。
到此HTTP的请求和响应都做了一个基本的介绍,以下简单介绍下用命令行对实现一些HTTP操作。
CURL命令行(常用)
1,抓取网页
curl -o www.baidu.com
2,自动跳转
curl -L www.baidu.com
3,显示头信息
curl -i www.baidu.com
4,显示通信过程
curl -v www.baidu.com
利用以上几个命令就可以在命令行中清楚的看到HTTP通信过程。
(由于HTTP深入的内容点非常广泛,想进一步了解,推荐一本书《图解HTTP》,想进一步了解CURL命令行,可查看阮一峰博客http://www.ruanyifeng.com/blog)