Получение только заголовка ответа из HTTP POST с помощью curl

можно запросить только заголовки с помощью HTTP HEAD, как опция -I на curl(1).

$ curl -I /

длинные тела ответов HTML-это боль, чтобы попасть в командную строку, поэтому я хотел бы получить только заголовок в качестве обратной связи для моих запросов POST. Однако HEAD и POST - это два разных метода.

как получить curl для отображения только заголовков ответов на запрос POST?

6 ответов


-D, --dump-header <file>
       Write the protocol headers to the specified file.

       This  option  is handy to use when you want to store the headers
       that a HTTP site sends to you. Cookies from  the  headers  could
       then  be  read  in  a  second  curl  invocation by using the -b,
       --cookie option! The -c, --cookie-jar option is however a better
       way to store cookies.

и

-S, --show-error
       When used with -s, --silent, it makes curl show an error message if it fails.

и

-L/--location
      (HTTP/HTTPS) If the server reports that the requested page has moved to a different location (indicated with a Location: header and a 3XX response
      code), this option will make curl redo the request on the new place. If used together with -i/--include or -I/--head, headers from  all  requested
      pages  will  be  shown.  When authentication is used, curl only sends its credentials to the initial host. If a redirect takes curl to a different
      host, it won’t be able to intercept the user+password. See also --location-trusted on how to change this. You can limit the amount of redirects to
      follow by using the --max-redirs option.

      When curl follows a redirect and the request is not a plain GET (for example POST or PUT), it will do the following request with a GET if the HTTP
      response was 301, 302, or 303. If the response code was any other 3xx code, curl will re-send the following  request  using  the  same  unmodified
      method.

С man-страницы. так что

curl -sSL -D - www.acooke.org -o /dev/null

следует за перенаправлениями, сбрасывает заголовки в stdout и отправляет данные в /dev / null (это GET, а не POST, но вы можете сделать то же самое с POST - просто добавьте любую опцию, которую вы уже используете для публикации данных)

Примечание - после -D что указывает на то, что выходной "файл" является stdout.


другие ответы требуют, чтобы тело ответа было загружено. Но есть способ сделать запрос POST, который будет получать только заголовок:

curl -s -I -X POST http://www.google.com

An -I сам по себе выполняет запрос HEAD, который может быть переопределен -X POST выполнить POST (или любой другой) запрос и по-прежнему получать только данные заголовка.


для длинных тел ответа (и различных других подобных ситуаций), решение, которое я использую, всегда по трубе less, Так что

curl -i https://api.github.com/users | less

или

curl -s -D - https://api.github.com/users | less

сделает работу.


следующая команда отображает дополнительную информацию

curl -X POST http://httpbin.org/post -vvv > /dev/null

вы можете попросить сервер отправить только голову, а не полный ответ

curl -X HEAD -I http://httpbin.org/

Note: некоторые неправильно настроенные / запрограммированные веб-серверы могут отвечать иначе, чем сообщение, потому что это главный запрос, а не сообщение. Но работает большую часть времени


гораздо проще – это то, что я использую избегайте отслеживания коротких ссылок – это:

curl -IL http://bit.ly/in-the-shadows

...которые также следует Ссылки.


в то время как другие ответы не работали для меня во всех ситуациях, лучшее решение, которое я мог найти (работа с POST также), взято из здесь:

curl -vs 'https://some-site.com' 1> /dev/null