The curl command with the -o /dev/null option can be used to suppress the response body output. Something like this should be displayed.
We can use curl -v or curl -verbose to display the request headers and response headers in the cURL command. The > lines are request headers . The < lines are response headers .
To make a GET request using Curl, run the curl command followed by the target URL. Curl automatically selects the HTTP GET request method unless you use the -X, --request, or -d command-line option.
You can use the -o
switch and null
pseudo-file :
curl -s -o /dev/null -v http://google.com
curl -s -o nul -v http://google.com
Here's a way to suppress all curl output and headers, with the option of still showing errors if they occur. Useful for cron jobs or automated testing.
To suppress all output:
curl --silent --output /dev/null http://example.com
To suppress output but still show errors if they occur:
curl --silent --output /dev/null --show-error --fail http://example.com
To suppress all output:
curl --silent --output nul http://example.com
To suppress output but still show errors if they occur:
curl --silent --output nul --show-error --fail http://example.com
--silent
suppresses the download-in-progress stats (but will still show HTML output)--output /dev/null
hides successful output--show-error
shows errors, even when silent
mode is enabled--fail
will raise an error if HTTP response is an error code (404, 500 etc.) instead of merely DNS/TCP errors.
UPDATE: I realise the original author wanted to inspect the headers and response code of a request rather than silencing everything. See samael's answer for details on how to do that.
When you want to show headers but hide the response body, you'll want to use:
curl -sIXGET http://somedomain.com/your/url
I'd been using curl -I http://somedomain.com/your/url
for just showing response headers. The problem with that though is that it makes the request using the HEAD
method which is no good when you want to test an API call that only responds to a GET
request. This is what the -X GET
is for, it changes the request to a GET
.
So, in summary:
-s
hides the progress bars from output (especially useful when piping to another program)-I
shows headers (but makes a HEAD
request)-XGET
converts request back to a GET
request
see: http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/
Just make a HEAD request. You will get the headers without the body. A standards-compilant server is supposed to send exactly the same information here as it would to a GET request.
curl --head <url>
If a HEAD request doesn't work for you for some reason, the following will make cURL make a GET
request but then print response code and headers and drop the connection without receiving the response body -- unlike other answers which receive and then discard it. This can save a lot of time and bandwidth, especially if the body is very large.
curl --head -X GET <url>
You can do likewise with any other verb (e.g. POST
) by supplying it to the -X
option instead of GET
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With