curl get请求_HTTP的请求与响应

本文详细解析了HTTP请求的各种类型,包括GET、POST请求及其带数据的情况,并介绍了如何使用curl命令及Chrome开发者工具来查看请求和响应的具体内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平时我们都在用浏览器访问网页,不管是pc端还是移动端,其实都是我们的浏览器(客户端)在与服务器进行交流,而HTTP 的作用就是指导浏览器和服务器如何进行沟通。那么http请求的内容包括哪些?响应的内容又包括哪些?怎么用git去查看浏览器的请求与响应?

http请求

今天要说的http请求包含三种方式,分别是get请求、post请求与post带数据请求三种。

1.get请求(以访问百度为例):

1b59221467076fbb12e82972b57e30f1.png

上图我用了curl命令行创造了一个请求,并且服务器给了我一个响应,那么现在我就对上图中的请求与响应作出相应的解释。

首先跟大于号一排对应的是请求,相反,跟小于号一排对应的是响应。

我们发出的请求是:

1>GET / HTTP/1.1

GET / HTTP/1.1:我们拆解一下GET / HTTP/1.1,GET:代表请求方式,/:代表路径,因为http://baidu.com后面没有带路径,所以系统帮我们自动加上了,HTTP:代表用的是HTTP协议,1.1代表的是版本号。总体意思就是“我要访问的是根目录,我使用的协议是HTTP,版本号是1.1”。

2> Host: 百度一下,你就知道(www.baidu.com)

告诉百度服务器我们要访问的域名是(http://www.baidu.com)。

3> User-Agent: curl/7.55.0

当前发起curl请求软件的版本号是7.55.0。

4> Accept: */*

告诉百度服务器我接受服务器给我的所有内容。

我们收到的响应是:

< HTTP/1.1 200 OK

使用的协议是HTTP,当前版本是1.1,200代表的是浏览器反馈给你的状态码,由于浏览器状态码太多,你可以看百度(维基),ok就是ok的意思。

< Content-Length: 2381

返回的字符长度是2381个字节。

< Content-Type: text/html

返回的格式是html。

< Date: Thu, 11 Jul 2019 14:26:27 GMT

返回的日期。

2.POST带数据请求:

我们跟上次请求一样,只不过这次换成了post请求。

运行 curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "百度一下,你就知道(www.baidu.com)"之后,服务器给了我们以下响应。

9e07138ccf3d3460ee4162c3f9417e69.png
用post发起带数据请求

e7c809a4e9be176928f5eb9ac5bfff66.png

我们发出的请求是:

>POST / HTTP/1.1

跟get请求类似只不过请求方式变成了post。

> Host: 百度一下,你就知道(www.baidu.com)

同上。

> User-Agent: curl/7.55.0

同上。

> Accept: */*

同上。

> Frank: xxx

这个可以写也可以不写,没有实际意义。

> Content-Length: 10

因为我们带了 1-0 10个字符串向服务器发起了请求。

> Content-Type: application/x-www-form-urlencoded

请求数据的格式。

我们收到的响应是:

< HTTP/1.1 302 Found

同上。

< Content-Length: 17931

返回的字符长度是17931个字节。

< Content-Type: text/html

返回的格式是html。

< Date: Thu, 11 Jul 2019 15:17:49 GMT

响应返回的日期。

3.POST不带数据请求:

b25a137861c669f7340bda6b6d81469e.png
用post发起不带数据的请求

0f8f8a4fc059309d69312ab59928a8bd.png

post不带数据请求跟get请求相类似,只是请求方式不一样,但是GET跟POST存在这本质区别,GET是从指定的资源请求数据,而POST向指定的资源提交要被处理的数据.但是这两种在向server请求或者响应时是没什么区别的。

1.用Chrome开发者工具查看 HTTP 请求内容(还是以访问百度为例)

427377c77a9d810aaa942d59d958e595.png
需要带数据请求服务器

d5f04d13e1af61335b055813bf7e48ac.png

42a17b759cbd96a42701ba84f4c9d743.png
由于这个是get请求所以没有第四部分

41d73238d2c6cfeafeaf64038d0381da.png
post请求

8978cd7b430edeb7d48cf12643a3ae37.png
post带数据请求第四部分

在chrome调试工具里我标注了请求有四部分

  1. 第一部分: 动词路径协议/版本
  2. 第二部分: Content-Type: application/x-www-form-urlencoded
    第二部分: Host: http://www.baidu.com
  3. 第三部分永远都是一个回车(n
  4. 要上传的数据

注意点

  1. 第三部分永远都是一个回车(n
  2. 动词有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
  3. 这里的路径包括「查询参数」,但不包括「锚点」
  4. 如果你没有写路径,那么路径默认为 /
  5. 第 2 部分中的 Content-Type 标注了第 4 部分的格式
  6. 用get也能带数据上传服务器,只是服务器会不接收!
  7. 第四部分有数据就是数据,没数据就是空。

响应有四部分

1 协议/版本号状态码状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: xxx长度
2 Content-Type: text/html
3
4 要下载的内容第 2 部分中的 Content-Type 标注了第 4 部分的格式第 2 部分中的 Content-Type 遵循 MIME 规范

注意点

  1. 第 2 部分中的 Content-Type 标注了第 4 部分的格式
  2. 第 2 部分中的 Content-Type 遵循 MIME 规范

git crul命令:

首先我们看一下完整的crul命令解释

89f7649260114cf637e37c9b47f76913.png

26227f642254bd3dd48e47a23c2d719e.png
curl -s -v -H &quot;xxx: yyy&quot; -- &quot;www.baidu.com&quot;

aa38f789ec54a5aadb7c8d0ebd2496ce.png
curl -s -v &quot;xxx: yyy&quot; -- &quot;www.baidu.com&quot;

40a2360cd0bb345437a869e417a24cc0.png
curl -s -H &quot;xxx: yyy&quot; -- &quot;www.baidu.com&quot;

1cfcba2f2607c7bdb3b9a432140d3182.png
curl -v -H &quot;xxx: yyy&quot; -- &quot;www.baidu.com&quot;

522f9f93bf656574c2b21d753d0a55cd.png
curl -s -v -H -- &quot;www.baidu.com&quot;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值