A saída do cabeçalho de curl
é impressa no erro padrão. Então você tem que usar o redirecionamento, por exemplo, grepping out Content-Length
header:
curl -v google.com 2>&1 | grep -vi content-length
Usando curl -v ...
, ou seja, o modo detalhado que imprime os cabeçalhos de entrada e saída. No entanto, esta informação não é canalizada e eu não posso encontrar linhas que eu não preciso.
Como você pode filtrar a saída do cabeçalho de curl?
Em vez de usar curl -v
(modo detalhado), a melhor opção é informar curl
para enviar os cabeçalhos para STDOUT sem todo o material de depuração extra e eliminar o corpo da resposta. Dessa forma, você pode percorrer exatamente os cabeçalhos de resposta, evitar a necessidade de redirecionamento de shell e saber que sua filtragem não precisará entender e analisar as mensagens de depuração internas de curl
(que provavelmente não são consideradas parte de sua API ).
Você pode fazer isso combinando o -I
(corpo da queda), -X«METHOD»
(método de substituição) e -s
(silêncio, barras de progresso de queda) parâmetros .
curl -sIXGET https://www.google.com/ | grep -vi content-length
-s
instrui curl
para ocultar as barras de progresso . Se omitido e curl
detectar que está sendo executado em um terminal, ele ignorará o pipe e falará diretamente com o terminal para mostrar as barras de progresso, que geralmente são inúteis e atrapalham o terminal. -I
instrui curl
a se desconectar do servidor depois de receber os cabeçalhos em vez de esperar por um corpo. Isso é útil se você, como declarado em sua pergunta, estiver interessado em passar através de somente os cabeçalhos de resposta HTTP . Ele também tem o efeito colateral de padronizar o método de solicitação para HEAD
como se você tivesse especificado -XHEAD
. -X«method»
(por exemplo, -XGET
) substitui o método. Em muitos casos, uma solicitação de HEAD
é o que você deseja porque o padrão HTTP diz que HEAD
deve retornar exatamente os mesmos cabeçalhos que a mesma solicitação GET
. No entanto, ao depurar um servidor ou ao trabalhar com um que não esteja em conformidade com o padrão, pode ser útil instruir curl
a fazer uma solicitação GET
, mas desconectar antes de ler o corpo da resposta. Dessa forma, você pode ver os cabeçalhos real que o servidor enviaria em resposta a GET
em vez de esperar que o servidor seja implementado corretamente.