1.服务器与浏览器的交互
本地的浏览器向服务器发起请求,服务器一般在80端口接受请求,服务器之后返回内容(响应),浏览器下载响应内容。
超文本传输协议(HTTP,HyperText Transfer Protocol)在上述过程中指导浏览器和服务器如何进行沟通。
2.HTTP的状态码
1XX系列:这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,除非试验条件下,否则不常用。
2XX系列:代表请求已成功被服务器接收、理解、并接受。成功
200:表示请求已成功,请求所希望的响应头或数据体将随此响应返回
201:表示请求成功并且服务器创建了新的资源,且其 URI 已经随Location 头信息返回。假如需要的资源无法及时建立的话,应当返回 '202 Accepted'
202:服务器已接受请求,但尚未处理
3XX系列:代表需要客户端采取进一步的操作才能完成请求。通常用来重定向
301 :请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD
请求的响应)时,会自动将请求者转到新位置。
302 : 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置
来进行以后的请求。
304 :自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回
网页内容。
4XX系列:表示请求错误。代表了客户端看起来可能发生了错误,妨碍了服务器的处理。
400 : 服务器不理解请求的语法。
401 : 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 : 服务器拒绝请求。
404 : 服务器找不到请求的网页。
5xx系列:代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器
意识到以当前的软硬件资源无法完成对请求的处理。
500 : 服务器遇到错误,无法完成请求。
503 : 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
504: 网关超时,由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。
3.HTTP动词
常用的HTTP动词有下面五个(括号里是对应的SQL命令):
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
其他动词:
HEAD:获取资源的元数据。
OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。
4.用 Chrome 发请求
- 打开 Network
- 地址栏输入网址
- 在 Network 点击,查看 request,点击「view source」
- 之后可以看到请求的前三部分了
- 如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到
请求格式:
1 动词 路径 协议/版本
2 Key1: value1 eg1: Content-Type: application/x-www-form-urlencoded
2 Key2: value2 eg2:Host: www.baidu.com
2 Key3: value3 eg3:User-Agent: curl/7.54.0
3
4 要上传的数据
注意:
- 请求最多包含四部分,最少包含三部分(也就是说第四部分可以为空)。第三部分永远都是一个回车(\n)
- 动词有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
- 这里的路径包括「查询参数」,但不包括「锚点」
- 如果你没有写路径,那么路径默认为 /
- 第 2 部分中的 Content-Type 标注了第 4 部分的格式
5.用 Chrome 发响应
- 打开 Network
- 输入网址
- 选中第一个响应
- 查看 Response Headers,点击「view source」,会看到响应的前两部分
- 查看 Response 或者 Preview,会看到响应的第 4 部分
响应格式:
1 协议/版本号 状态码 状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html (标注了第四部分的格式)
3
4 要下载的内容
6. 命令行请求实例
curl命令:是一个利用URL规则在命令行下工作的文件传输工具。
Get请求:curl -s -v -H "Frank: xxx" -- "https://www.baidu.com/path" -s表示静默模式,即不输出任何东西;-v表示啰嗦模式,即获取 curl发出和接受的数据;-H 指(HTTP)extra header。
返回的格式:
1 GET /path HTTP/1.1
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
2 Accept: */*
2 Frank: xxx
3
Post请求:curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "https://www.baidu.com" -d 表示 数据;-X 表示请求。
返回的格式:
1 POST / HTTP/1.1
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
2 Accept: */*
2 Frank: xxx
2 Content-Length: 10
2 Content-Type: application/x-www-form-urlencoded
3
4 1234567890