我已阅读 的手册页Curl
,但我无法理解这些参数(k、i 和 X)的含义。我看到它在 REST API 调用中使用,但有人可以解释一下这三个参数的作用吗?文档中并不清楚。
先感谢您。
答案1
-k, --不安全:如果您要对正在使用的网站进行curl自签名 SSL 证书然后curl会给你一个错误卷曲无法验证证书。在这种情况下,您可以使用-k
或--insecure
标记跳过证书验证。
例子:
[root@arif]$ curl --head https://xxx.xxx.xxx.xxx/login
curl: (60) Peer's Certificate issuer is not recognized.
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a
"bundle" of Certificate Authority (CA) public keys (CA certs).
If the default bundle file isn't adequate, you can specify an
alternate file using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented
in the bundle, the certificate verification probably failed
due to a problem with the certificate (it might be expired,
or the name might not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate,
use the -k (or --insecure) option.
[root@arif]$ curl -k --head https://xxx.xxx.xxx.xxx/login
HTTP/1.1 302 Moved Temporarily
Date: Thu, 07 Dec 2017 04:53:44 GMT
Transfer-Encoding: chunked
Location: https://xxx.xxx.xxx.xxx/login
X-FRAME-OPTIONS: SAMEORIGIN
Set-Cookie: JSESSIONID=xxxxxxxxxxx; path=/; HttpOnly
-i,--包括:此标志将包含 http 标头。通常http标头由服务器名称、日期、内容类型等组成。
例子:
[root@arif]$ curl https://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="https://www.google.com/">here</A>. </BODY></HTML>
[root@arif]$ curl -i https://google.com
HTTP/1.1 301 Moved Permanently
Location: https://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Thu, 07 Dec 2017 05:13:44 GMT
Expires: Sat, 06 Jan 2018 05:13:44 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 220
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alt-Svc: hq=":443"; ma=2592000; quic=51303431; quic=51303339;
quic=51303338; quic=51303337; quic=51303335,quic=":443"; ma=2592000;
v="41,39,38,37,35"
<HTML><HEAD><meta http-equiv="content-.....
-X,--请求:此标志将用于向服务器发送自定义请求。大多数时候我们这样做GET
,,,HEAD
并且POST
。但如果您需要特定请求,例如PUT
, FTP
,DELETE
那么您可以使用此标志。以下示例将向 google.com 发送删除请求
例子:
[root@arif]$ curl -X DELETE google.com
..........................
<p><b>405.</b> <ins>That’s an error.</ins>
<p>The request method <code>DELETE</code> is inappropriate for the URL
<code>/</code>. <ins>That’s all we know.</ins>`
答案2
有明确记录这里。
编辑
从手册页
-k, --不安全
(TLS) 默认情况下,curl 建立的每个 SSL 连接都经过验证是安全的。即使对于其他被认为不安全的服务器连接,此选项也允许curl 继续进行和操作。
通过确保服务器的证书包含正确的名称并使用证书存储成功验证来验证服务器连接。
这意味着,即使存在证书错误(过期证书、自行颁发的证书等)-k
,也会接受与 HTTPS 的连接curl
-i,--包括
在输出中包含 HTTP 响应标头。 HTTP 响应标头可以包括服务器名称、cookie、文档日期、HTTP 版本等内容...
要查看请求标头,请考虑 -v, --verbose 选项。
另请参见 -v, --verbose
我无法用外行语言对此说太多。如果您不熟悉 HTTP 响应标头,这您可以在这里找到更多信息。
-X,--请求
(HTTP) 指定与 HTTP 服务器通信时使用的自定义请求方法。将使用指定的请求方法,而不是其他使用的方法(默认为 GET)。请阅读 HTTP 1.1 规范以获取详细信息和解释。常见的附加 HTTP 请求包括 PUT 和 DELETE,但 WebDAV 等相关技术提供 PROPFIND、COPY、MOVE 等。
通常你不需要这个选项。各种 GET、HEAD、POST 和 PUT 请求都是通过使用专用命令行选项来调用的。
此选项仅更改 HTTP 请求中使用的实际单词,它不会改变curl 的行为方式。因此,例如,如果您想发出正确的 HEAD 请求,使用 -X HEAD 是不够的。您需要使用 -I, --head 选项。
您使用 -X, --request 设置的方法字符串将用于所有请求,例如,如果您使用 -L, --location ,当curl 不根据 HTTP 30x 更改请求方法时,可能会导致意想不到的副作用响应代码 - 和类似的。
(FTP) 指定在使用 FTP 执行文件列表时使用的自定义 FTP 命令,而不是 LIST。
(POP3) 指定要使用的自定义 POP3 命令,而不是 LIST 或 RETR。 (7.26.0 中添加)
(IMAP) 指定要使用的自定义 IMAP 命令而不是 LIST。 (7.30.0 中添加)
(SMTP) 指定要使用的自定义 SMTP 命令,而不是 HELP 或 VRFY。 (7.34.0 中添加)
如果多次使用此选项,则将使用最后一次。
当你使用curl访问网页时,它实际上是向服务器发送GET请求。还有其他类型的请求可以使用,并且-X
是指定这种请求的方式。如上所述,通常不需要该命令。例如,如果您需要 POST 请求,您可以使用-d
而不是使用-X
.如果没有更多信息,很难说为什么您需要-X
在 API 调用中使用。