|
% C, B0 W6 N2 T( ?- H. ^ 定义超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议HTTP的作用就是指导浏览器和服务器如何进行沟通那么又是如何实现沟通的呢?
$ A( O9 q8 L+ E# D+ O 如上图所示:客户端的浏览器发起请求--->服务器在其80端口接收到请求之后,然后根据客户端的请求发出对应响应返回内容,将相关数据发送给客户端---->浏览器负责下载响应内容;tips:80端口专门用来服务HTTP;
3 G8 X$ |% ]4 F) _6 c 如下图,URL构成如下: 9 ^$ B4 J4 Z0 L2 J$ \
这里解释一下锚点: 
1 k l! F5 V' D$ |+ R/ Z1 @) B6 S HTTP请求1.发送请求的格式: 第一部分: 动词 路径 协议/版本 第二部分: key1 : value1 第二部分:key2 : value2 第二部分:key3 : value3 第二部分:Content-Type : application / x-www-form-urlencoded (我要上传的数据内容的类型和格式) 第二部分: Content-Length:10 (我要上传的数据的长度) 第二部分:HOST:http://www.baidu.com //目标域名 第二部分:User-Agent : Curl/7.54.0 //你通过哪个软件(工具发起请求的) 第三部分: 第四部分:要上传的数据
) D& I7 b3 ]. V9 I6 s! j 请求最多包含四部分,至少三部分,也就是第四部分 可以空着;第三部分永远都是一个回车(/n)主要作用就是划出三四部分的界限;动词主要有GET(获取),POST(上传数据:主要是用户名,密码,头像之类的数据),PUT(整体更新,就是将你上传的所有数据全都替换掉),PATCH(局部更新,就是将你上传的数据中的一部分更新掉),DELETE(删除)等;这里的路径包括查询参数,但是不包括锚点如果你不写路径,默认为/;(路径必须以/开头)第二部分的Content-Type标注了第四部分的格式 注:不按照协议来,会报错的! # @* b, O: h$ a/ Z D( f
curl使用实例:curl -s -v -- "https://www.baidu.com/s?wd=JavaScript"
2 A1 H. O* m: h8 V+ } 如果你不写路径,默认为/ + L8 s, P& I7 i7 C$ L3 w2 U
用chrome作一个实验    + e, C" R( a0 Y4 @
可以看到http的请求;http响应响应示例: 3 t3 I0 I, G% c. h! \( b
目前需要对content-length和content-type需要了解一下:以向百度发送请求为例,我们请求的时候会带上我们的数据,返回的时候百度服务器会返回百度相关的数据(包括响应的格式,这里为文本,以及响应的长度); $ b- i8 a4 l0 R0 N& ?6 q+ H
响应的格式1.协议/版本号 状态码 状态解释 2.key1: value1 2.key2: value2 2.Content-Length:17931 2.Content-Type:text/html 3. 4.要下载的内容 5 j ?/ c8 G* T- q
状态码:需要记忆,是服务器对浏览器要说的话:1xx:不常用2xx:表示成功,200表示普通成功(如果是get,则返回200给你);204表示创建成功(如果你是post,服务器就可能返回一个204给你);3xx:表示你滚吧;(301:表示以前在这里的那个人永久搬走了,我会在第二部分告诉你它搬到哪里了;302:表示他临时不在,可能过几天就回了)4xx:表示你错了(比如你输入的网址有错误)5xx:表示我错了==
0 _% [3 t# n2 ]8 ? d7 I; o 用chrome做一个实验  8 @. G4 @# [7 q! O1 S% D9 b
响应部分的第一部分和第二部分在Headers里面;第四部分在response里面;curl命令的使用curl命令是一个利用URL规则在命令行下工作的文件传输工具它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具;。
/ K# \8 Z) n' P+ f& c/ U# p curl命令通常由动作,{关键词},路径,协议/版本组成。如下命令:curl -X POST -d "1234567890" -H "xxx" -- "https://www.baidu.com" : V: h" R' W- [% I3 x) \
-X表示请求动作,默认是GET,如果不指定动作的话-d是data表示将相应的数据发送给服务器,然后等待服务器的响应-H表示设置HTTP头部额外的内容之后服务器会响应该请求HTTP协议是无状态的连接协议,服务器无法知道客户是否拥有权限访问该服务器。
: i# M/ }$ h+ A. I Token就是一种存储在客户端cookie或者Local Storage的一种身份验证方法当客户端发送请求后,服务器端会去验证客户端身份,然后发送一个Token,客户端每次请求都会要求携带一个合法的Token。 & j; J2 ~2 r d, k7 [# x& `: `2 W
下面再举个例子:curl -X POST -s -v -H "richard: xxx" -- "https://www.baidu.com" G. B) U: |( N; T+ C r
原文地址:https://zhuanlan.zhihu.com/p/46716496 , C% T* d+ q5 {
& l( l0 P! b8 ]; Z) {- @; a% M
' n: {: P$ u. F5 a" e
! ^) v2 i+ m0 m) U
: q( W4 @2 Y& S! ^& j4 h |