Argument

Example

# get the file source and output to the STDOUT
curl http://wiki.wutianqi.com/index.html

# download the file
curl -o myindex.html http://wiki.wutianqi.com/index.html
curl -O http://wiki.wutianqi.com/index.html

# get the HTTP-header only
curl -I http://wiki.wutianqi.com/index.html

IPv6

curl ipv6 localhost:8000, 注意要加-g-6, url要用方括号(bracket):

curl -g -6 'http://[::1]:8000'

参考: How can I use curl with ::1 for ipv6 based loopback?

--resolve

除了通过/etc/hosts绑定主机. 对于http请求, 可以在-H 'Host: example.com'中来绑定host访问某台机器.

对于SNI, 因为证书验证时的CN匹配是通过url来判断的, 所以上面的方法没用.

可以考虑--resolve <host:port:address>来绑定主机和端口 (所以除了SNI, 其它协议都可以). 手册讲得有点不清楚.

这里host:port表示要访问的域名:端口, address绑定将这个域名绑定到哪个地址(ip)上. 这里指定的域名和端口(协议)是在后面的url里用到的.

比如场景: 域名example.com, 配置了SNI. proxy_server反代配置了缓存, 限制内网才可以做cache purge操作, real_server是实际的server.

所以无法通过如下清理缓存:

curl -I https://example.com/cache_purge/path/to/page.html

需要考虑将这个url host绑定到proxy_server的内网ip上, 这时就可以考虑--resolve了:

curl -I --resolve example.com:443:192.168.0.101 https://example.com/cache_purge/path/to/page.html

Read More