HTTP
HTTP(超文本传输协议,HyperText Transfer Protocol),相当于一个桥梁,指导服务器与客户端建立连接与交互的标准
请求的基本格式:包括至少前3部分,或者最多4部分
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 要上传的数据
敲黑板: 动词包括:GET POST PUT PATCH DELETE HEAD OPTIONS
路径包括「查询参数」,但不包括「锚点」
第3部分永远是回车,用于分隔区别第2与第四部分的
备注:符号 " > " 标识 请求request
HTTP 三种常见的请求方式以及如何 用Chrome开发者工具查看 HTTP 请求和响应内容
第一种 请求方式: GET请求 curl -s -v -H "key: value" -- "https://www.baidu.com"
请求内容如下:
> GET / HTTP/1.1 相当于第1部分
> Host: www.baidu.com 相当于第2部分
> User-Agent: curl/7.55.0 相当于第2部分
> Accept: */* 相当于第2部分
> key: value 相当于第2部分
> 相当于第3部分
有请求必有响应,哪怕失败的响应,三种请求方式对应三种响应,此处以第3种POST上传为例
响应的基本格式
1 协议/版本号 状态码 状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下载的内容
备注:符号 " < " 标识 请求响应,Content-Type标识了第 4 部分的格式
响应的内容:
< HTTP/1.1 302 Found 相当于第1部分
< Connection: Keep-Alive 相当于第2部分
< Content-Length: 17931 相当于第2部分
< Content-Type: text/html 相当于第2部分
< Date: Sat, 06 Apr 2019 11:36:17 GMT 相当于第2部分,多个value值,逗号隔开
< Etag: "54d97485-460b" 相当于第2部分
< Server: bfe/1.0.8.18 相当于第2部分
< 相当于第3部分
如何用谷歌查看HTTP请求及响应内容
1.打开谷歌开发者模式F12,选中Network选项,
2.点击请求(Request)或者响应(Response)模块的viewSource,即看 HTTP 请求内容和响应内容
3.查看 Response 或者 Preview,你会看到响应的第 4 部分
第二种 请求方式: POST请求(未上传数据) curl -X POST -s -v -H "key: value" -- "https://www.baidu.com"
> POST / HTTP/1.1 相当于第1部分
> Host: www.baidu.com 相当于第2部分
> User-Agent: curl/7.55.0 相当于第2部分
> Accept: */* 相当于第2部分
> key: value 相当于第2部分
> 相当于第3部分
备注: 与第一种请求方式的区别,就在于一个为POST / HTTP/1.1 另一个为 GET / HTTP/1.1
第三种 请求方式: POST请求(含上传数据) curl -X POST -d 1234567890 -s -v -H "key: value" -- "https://www.baidu.com"
> POST / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.55.0
> Accept: */*
> key: value
> Content-Length: 10
> Content-Type: application/x-www-form-urlencoded
>
备注: 与第二种请求方式的区别,就在于增加了两行Content-Length: 10 上传的大小
Content-Type: application/x-www-form-urlencoded Content-Type标注了上传部分的格式