|
4 Y, F2 ~9 t" B5 o" c! L1 e, Q
HTTP 请求包括哪些部分,如何用Chrome开发者工具查看 HTTP 请求内容?HTTP 响应包括哪些部分,如何用Chrome开发者工具查看 HTTP 响应内容?如何使用 curl 命令?一、笔记1、李爵士发明了URI(统一资源标识符)、HTTP(超文本传输协议)、HTML(超文本标记语言);
- R- _- c+ Q2 b, R 2、URL(统一资源定位符)、URN(统一资源名称);3、URL组成:协议+域名+路径+查询参数+锚点+端口,http://baidu.com是二级域名,http://www.baidu.com是三级域名; $ I$ S; ~0 ^' B( ?
4、DNS(域名解析系统):输入域名,输出IP;5、server服务器、client客户端、http协议,一个端口只做1件事,80端口用来服务http;6、浏览器负责发起请求,服务器在 80 端口接收请求,服务器负责返回内容(响应),浏览器负责下载响应内容,HTTP 的作用就是指导浏览器和服务器如何进行沟通;
+ E+ Q' n1 t& R3 ]( A) n 7、状态码解释:https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81 7 h2 K3 m$ _' _
二、http请求包含部分1、格式1动词 路径 协议/版本9 T, h, M) p, D( Z: b0 R3 S
2 Key1: value1! O" K1 F0 B- {* Y! z6 T$ O- y
2 Key2: value2
- ]' W' R0 T& i9 V7 l! c 2 Key3: value32 Z6 M. J5 ] z K9 W* u+ M
2 Content-Type: application/x-www-form-urlencoded
+ z8 m9 E/ a5 l6 o 2 Host: www.baidu.com: K. B& l) L- r( `1 N
2 User-Agent: curl/7.54.0
8 Q" e9 n6 J6 E; P0 j: v 3
- {& N# m. F3 R7 H) c8 l 4 要上传的数据 6 I$ }% b( t) F7 w
解释:请求最多包含4部分,最少包含3部分;第3部分永远是一个回车;动词可以是GET(获取) POST(上传)PUT(整体更新)PATCH(局部更新)DELETE(删除)HEAD OPTIONS等;路径包含查询参数但不包括锚点;如果没有写路径,默认为/;Content-Type标注了第四部分的格式;
5 e' s3 M0 Z) l5 N* c 2、GET请求例子1 GET / HTTP/1.1
3 O4 F5 F! M' x* G 2 Host: www.baidu.com
0 z E1 e1 e' U' U2 ~* o 2 User-Agent: curl/7.54.0, M, q+ r. w9 Z9 }6 p* `
2 Accept: */*8 P: x! _/ a% b2 E4 c
2 Frank: xxx
, d1 D: `* V3 I0 Y, [1 U% } 3
6 {: t) A: U0 x2 I 3、POST请求例子1 POST /path HTTP/1.1; J' t9 {0 k# p, R5 k
2 Host: baidu.com) W2 J# t% e5 K" E1 ^
2 Accept:application/json
. a) J7 Y4 q6 s 2 Conetent-Type:application/x-www-form-urlencoded
, L: |8 u# q$ `" R 2 Conetent-Length:1000- F* m7 ~2 A/ q2 k4 g- R
3
% l9 A/ N* j/ ?$ K% S: K/ P 4 username=ff&password=123
) R' k/ @/ @# Z( F' _# C& g* K 三、用Chrome查看请求1、打开 Network2、地址栏输入网址3、在 Network 点击查看 request,点击「view source」点击「view source」点击「view source」 - w* G' M: u4 E8 g$ O0 P1 V6 e& m) ]
4、可以看到请求的前三部分了5、如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到四、http响应包含部分1、格式1 协议/版本号 状态码 状态解释
4 u; V7 e+ K5 W y5 s; j# \9 Q/ ? 2 Key1: value1
8 I% L( a2 m- l 2 Key2: value2/ \ B2 x! o1 K+ s, E7 u% `2 G3 p
2 Content-Length: 179312 B( R9 h" H5 Q6 e/ z6 d- r: y
2 Content-Type: text/html, d! z+ Y( P) D7 N
3
- O4 \3 B- A" m3 ?! B9 S6 S 4 要下载的内容
. N+ }9 ]; q# b D" { 2、例子HTTP/1.1 302 Found" K. ]( j8 o9 ]3 F: X$ l0 I% X
Connection: Keep-Alive! q$ ~5 p" [4 s8 r# q' S. g
Content-Length: 17931
% Y' y E S- i4 }3 t" f" Z8 R Content-Type: text/html
1 O0 d7 n5 s" j' X: _9 f Date: Tue, 10 Oct 2017 09:19:47 GMT+ H% U" o6 i1 d$ O9 l5 ^
Etag: "54d9749e-460b"
% Y* c& Y' i6 z8 } Server: bfe/1.0.8.18 " \6 f7 B+ l5 t, l* ~- ^2 U
五、用Chrome查看响应1、打开 Network2、输入网址3、选中第一个响应4、查看 Response Headers,点击「view source」5、你会看到响应的前两部分6、查看 Response 或者 Preview,你会看到响应的第 4 部分
6 E0 H _$ g) k 六、如何使用curl命令1、GET请求访问百度的命令:curl -s -v -- "https://www.baidu.com"2、如果要获取网页时使用额外的标题,可以输入命令:url -s -v -H "Lambert: xxx" -- "https://www.baidu.com"
! ^- c7 h2 T& ]- f: A 3、POST请求使用额外标题访问QQ的命令:curl -X POST -s -v -H "Lambert: xxx" -- "https://www.qq.com"4、POST请求访问并指定数据发送HTTP服务器命令: / m. I6 A& H9 E' Z" \5 X y
curl -X POST -d "111111111" -s -v -H "Lambert: xxx" -- "https://www.qq.com"5、下载一个页面的内容curl 网址>本地文件夹路径 4 P% S, O" k1 T2 s/ |
7 Y' @6 J b3 i; Y4 C
- M' O! N( i& v6 p+ b- p& B: g3 D& n4 |% `
$ R, w- C0 U% \+ }% w1 J& k |