首先了解几个概念:
- URL(Uniform Resource Identifier): 统一资源定位符,用于标识某一互联网资源名称的字符串。
以百度网址为例:https://www.baidu.com/s?wd=nihao&rsv_spt=1。这就是一个URL。而今天要学的就是其中HTTP协议,其中HTTPS是HTTP协议的加密版。
- HTTP(HyperText Transfer Protocol):超文本传输协议,设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTTP是万维网的数据通信的基础。
HTTP一般包括请求与响应两部分。
HTTP请求
下面介绍使用Chrome浏览器对百度网址发送一个请求,如何查看请求都包含什么部分。
1.首先打开百度(https://www.baidu.com),然后鼠标右键,点击检查
2.点击Network,按下F5刷新,点击第一列请求,查看 request,点击「view source」
为了更方便的查看请求内容都包含什么,以bash命令为例进行介绍。在git bash中输入如下命令:
curl -s -v -H "Frank: xxx" -- "https://www.baidu.com"
,HTTP请求一般使用get或者post请求。默认使用get请求,得到如下图所示:
再用post请求:
curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "https://www.baidu.com"
得到如下图所示: post请求
即请求的一般格式为:
1 动词 路径 协议/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
3
4 要上传的数据
请求一般包括四部分,第一部分为:动词 路径 协议/版本;第二部分为:Key:value的形式;第三部分为换行即\n,第四部分为请求的数据。需要注意的是:
1.第三部分永远都是一个回车(\n)
2.动词有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
3.这里的路径包括「查询参数」,但不包括「锚点」
4.如果你没有写路径,那么路径默认为 /
5.第 2 部分中的 Content-Type 标注了第 4 部分的格式
HTTP响应
同样的使用HTTP请求中的方式,查看HTTP响应。在Chrome浏览器中,查看 Response Headers,点击「view source」,即可查看响应的前两部分,点击 Response 或者 Preview,你会看到响应的第四部分。
同样的,为了方便查看,在gitbash中总结响应的格式:
HTTP响应
1 协议/版本号 状态码 状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下载的内容
与请求一样,响应也分为四部分,其中需要作出解释的是状态码,根据数字的不同,含义也不一样。具体可参考维基百科:HTTP状态码
在上述引用中:
1.第 2 部分中的 Content-Type 标注了第 4 部分的格式
2.第 2 部分中的 Content-Type 遵循 MIME 规范
网友评论