Curl post data and headers only

Curl

Curl Problem Overview


I want to get the headers only from a curl request

curl -I www.google.com

All grand. Now I want to do that but to pass in post data too:

curl -I -d'test=test' www.google.com

But all I get is:

Warning: You can only select one HTTP request!

Anyone have any idea how to do this or am I doing something stupid?

Curl Solutions


Solution 1 - Curl

The -I option tells curl to do a HEAD request while the -d'test=test' option tells curl to do a POST, so you're telling curl to do two different request types.

curl -s -d'test=test' -D- -o/dev/null www.google.com 

or, on Windows:

curl -s -d'test=test' -D- -onul: www.google.com 

That is the neatest way to do this as far as I can find. The options are:

  • -D- Dump the header to the file listed, or stdout when - is passed, like this.
  • -o/dev/null Send the body to the file listed. Here, we discard the body so we only see the headers.
  • -s Silent (no progress bar)

Solution 2 - Curl

-d means you are sending form data, via the POST method. -I means you are just peeking at the metadata via HEAD.

I'd suggest either

  • Download to /dev/null and write the headers via the -D headerfile to the file headerfile
  • Use -i to include the headers in the answers and skip everything from the first empty line.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJ.D. Fitz.GeraldView Question on Stackoverflow
Solution 1 - CurlJ.D. Fitz.GeraldView Answer on Stackoverflow
Solution 2 - CurlphihagView Answer on Stackoverflow