Подтвердить что ты не робот

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

Можно запросить только заголовки, используя HTTP HEAD, в качестве опции -I в curl(1).

$ curl -I /

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

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

4b9b3361

Ответ 1

-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 wont 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 - просто добавьте все параметры, которые вы уже используете для POSTing данных)

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

Ответ 2

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

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

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

Ответ 3

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

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

или

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

выполнит эту работу.

Ответ 4

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

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

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

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

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

Ответ 6

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

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

Ответ 7

Http Get достаточно хорош, чтобы получить только заголовок. Следующая команда работает для http GET:

curl -I https://stackoverflow.com/