|
: G2 D! ~* `7 S) r5 E8 S
HTTP 请求包括哪些部分,如何用Chrome开发者工具查看 HTTP 请求内容?HTTP 响应包括哪些部分,如何用Chrome开发者工具查看 HTTP 响应内容?如何使用 curl 命令?一、笔记1、李爵士发明了URI(统一资源标识符)、HTTP(超文本传输协议)、HTML(超文本标记语言);
/ w4 N' }! c2 C3 Y 2、URL(统一资源定位符)、URN(统一资源名称);3、URL组成:协议+域名+路径+查询参数+锚点+端口,http://baidu.com是二级域名,http://www.baidu.com是三级域名;
- o" s( e, x, y, K+ j 4、DNS(域名解析系统):输入域名,输出IP;5、server服务器、client客户端、http协议,一个端口只做1件事,80端口用来服务http;6、浏览器负责发起请求,服务器在 80 端口接收请求,服务器负责返回内容(响应),浏览器负责下载响应内容,HTTP 的作用就是指导浏览器和服务器如何进行沟通;
3 g1 W) z5 D8 ?+ x 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
8 q! B6 n* K; C+ O9 g, v 二、http请求包含部分1、格式1动词 路径 协议/版本
) F, `: _, {+ `: p 2 Key1: value1 |9 T, v4 E+ _& W' O
2 Key2: value2
! s! p2 Z" l5 T" m 2 Key3: value3
" \2 q! B; U& T& b 2 Content-Type: application/x-www-form-urlencoded* j6 }4 Q9 m8 F) l7 g# l) z
2 Host: www.baidu.com* x1 n" G. Z% M) k, B. i
2 User-Agent: curl/7.54.0
/ Q9 E" m! B6 ] 3
3 o3 V, G6 A$ R+ @" U7 q 4 要上传的数据 + l x' A( I+ e3 E) S# `% F
解释:请求最多包含4部分,最少包含3部分;第3部分永远是一个回车;动词可以是GET(获取) POST(上传)PUT(整体更新)PATCH(局部更新)DELETE(删除)HEAD OPTIONS等;路径包含查询参数但不包括锚点;如果没有写路径,默认为/;Content-Type标注了第四部分的格式; ; a4 x9 b- n4 D. h. J8 _
2、GET请求例子1 GET / HTTP/1.1) C, {$ h' m6 I, |) t) S
2 Host: www.baidu.com9 i' [3 ^1 X, m; {! P$ T
2 User-Agent: curl/7.54.0
. B) F3 W/ p: U) T6 Z" u 2 Accept: */*. N# N! @+ F2 |8 Q
2 Frank: xxx; N) y; M5 S/ }% k, a
3
4 _4 X7 p) E6 N! `* X. ~+ u' \- E 3、POST请求例子1 POST /path HTTP/1.1- k* ]. X& ~! S" e4 g7 `
2 Host: baidu.com
5 b1 U" c7 ^* b7 M: j8 y p9 s- V 2 Accept:application/json
* z& D# d, W( O# I# K1 O) G 2 Conetent-Type:application/x-www-form-urlencoded
. @0 q& a3 h$ V2 u+ g 2 Conetent-Length:1000
; D! k; p) t& ?4 a8 N2 f. \$ ~* x 3. x$ j5 q2 v" `7 e" O" u% K# f
4 username=ff&password=123
9 s" V5 S( Q: }! X m/ W 三、用Chrome查看请求1、打开 Network2、地址栏输入网址3、在 Network 点击查看 request,点击「view source」点击「view source」点击「view source」 2 E0 q1 i4 a9 L0 j; @
4、可以看到请求的前三部分了5、如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到四、http响应包含部分1、格式1 协议/版本号 状态码 状态解释
% [" ^) K2 f8 G! \% ~ 2 Key1: value1; B3 y% I5 {; X ]% f* q- |
2 Key2: value27 ~/ N! N" M; b( S; r9 L3 t
2 Content-Length: 17931% g( I1 P$ s$ M, ?8 m& ]. b* Y
2 Content-Type: text/html( i) ?% a1 M/ Q6 N1 L; h9 v
3
4 G/ X% Y" L9 [' @* u8 Y% K 4 要下载的内容 % M/ R7 w# L3 Y) }2 T
2、例子HTTP/1.1 302 Found7 J# L) x8 a/ Q+ z
Connection: Keep-Alive+ z- f* f- @! z/ x& O7 \0 L4 L' p
Content-Length: 17931
2 T3 G2 h; Q! C) E H Content-Type: text/html
/ u+ z5 G; ~' j: J3 j# _/ U9 J- ] Date: Tue, 10 Oct 2017 09:19:47 GMT
+ ]- n6 o. s$ N# |9 p Etag: "54d9749e-460b") b) }! }+ {0 w4 v
Server: bfe/1.0.8.18
& X$ m! W/ L- s" H 五、用Chrome查看响应1、打开 Network2、输入网址3、选中第一个响应4、查看 Response Headers,点击「view source」5、你会看到响应的前两部分6、查看 Response 或者 Preview,你会看到响应的第 4 部分
4 U8 y1 k( O% e7 N* W$ I8 @ 六、如何使用curl命令1、GET请求访问百度的命令:curl -s -v -- "https://www.baidu.com"2、如果要获取网页时使用额外的标题,可以输入命令:url -s -v -H "Lambert: xxx" -- "https://www.baidu.com"
1 h6 \4 c& \/ Z& G ~% o 3、POST请求使用额外标题访问QQ的命令:curl -X POST -s -v -H "Lambert: xxx" -- "https://www.qq.com"4、POST请求访问并指定数据发送HTTP服务器命令: # p1 l% ]5 {5 s$ i' e& |6 Q+ P
curl -X POST -d "111111111" -s -v -H "Lambert: xxx" -- "https://www.qq.com"5、下载一个页面的内容curl 网址>本地文件夹路径 ! `4 U( O; B' E; P" C, k
+ V$ H8 o7 u- @- _% ?8 V! f+ _! E# C( ~
+ y/ Y+ T# H" y4 O
+ V9 W: R$ w2 Y5 ?; B$ Q' t) A |