📅  最后修改于: 2023-12-03 14:40:24.182000             🧑  作者: Mango
在 Shell-Bash 中,Curl 是一个强大的命令行工具,主要用于发送 HTTP 请求,获取或上传数据。同时,Curl 提供了许多选项,可以控制请求的各个方面,如请求头、响应头、正文等等。
在这篇文章中,我们将讨论 Curl 中的详细响应选项,以及如何利用它们来调试和分析 HTTP 请求和响应。
Curl 提供了三个用于获取详细响应的选项:
-i
:显示响应头和正文(头信息和 body)。-I
:仅显示响应头(头信息)。-v
:显示请求和响应的所有信息(头信息,body 和 SSL 握手等)。以下是使用 Curl 命令获取详细响应的示例:
$ curl -i https://www.example.com
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1270
Date: Wed, 17 Nov 2021 12:13:06 GMT
Server: Apache/2.4.18 (Ubuntu)
X-Powered-By: PHP/7.0.22
<!DOCTYPE html>
<html>
<head>
...
<body>
...
</body>
</html>
在这个示例中,我们使用 -i
选项来显示响应头和正文。Curl 在请求的行后输出响应的所有头信息,并在响应头和响应正文之间输出一个空行。
$ curl -I https://www.example.com
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1270
Date: Wed, 17 Nov 2021 12:13:06 GMT
Server: Apache/2.4.18 (Ubuntu)
X-Powered-By: PHP/7.0.22
在这个示例中,我们使用 -I
选项来显示响应头。Curl 在请求的行后输出响应的所有头信息,但不显示响应正文。
$ curl -v https://www.example.com
* Trying 93.184.216.34...
* TCP_NODELAY set
* Connected to www.example.com (93.184.216.34) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
...
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
...
> GET / HTTP/2
> Host: www.example.com
...
< HTTP/2 200
< content-type: text/html; charset=UTF-8
< content-length: 1270
< date: Wed, 17 Nov 2021 12:13:06 GMT
< server: Apache/2.4.18 (Ubuntu)
< x-powered-by: PHP/7.0.22
<!DOCTYPE html>
<html>
<head>
...
<body>
...
</body>
</html>
* Connection #0 to host www.example.com left intact
在这个示例中,我们使用 -v
选项来显示请求和响应的所有信息,包括 SSL 握手信息。Curl 首先输出与服务器建立的连接,然后输出 HTTP 请求和响应的所有头信息和正文。在响应正文之后,Curl 输出关于连接状态的信息。
本文介绍了 Curl 中的详细响应选项,并提供了使用这些选项的示例。Curl 的详细响应选项非常有用,可以帮助程序员调试和分析 HTTP 请求和响应。