Como obter resposta do servidor http no caso de 401 usando o wget?

1

Eu preciso testar minhas respostas do servidor HTTP em vários casos, mesmo em caso de falha na autenticação. Em caso de falha na autenticação, meu servidor retorna 401 Unauthorized e também um corpo de resposta que simples contém Unauthorized (ou talvez alguma outra mensagem detalhada).

Usando, por exemplo, curl ou httpie , eu obtive esse corpo de resposta no caso de 401 de resposta.

$ curl http://10.5.1.1/bla 
Unauthorized
$ curl http://10.5.1.1/bla --digest --user joe:wrong 
Unauthorized
$ http http://10.5.1.1/bla -b
Unauthorized
$ http http://10.5.1.1/bla -b --auth-type digest --auth joe:wrong
Unauthorized

Mas ao tentar isso usando o wget, não tenho saída:

$ wget http://10.5.1.1/bla -q -O /dev/stdout
$ wget http://10.5.1.1/bla -q -O /dev/stdout --user joe --password wrong

wget retorna com exitcode 6 neste caso, mas eu preciso verificar a mensagem de resposta.

Aqui está um dump do tráfego completo, capturado usando httpie:

$ http http://10.5.1.1/bla --print hbHB
GET /bla HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: 10.5.1.1
User-Agent: HTTPie/0.9.2

HTTP/1.1 401 Unauthorized
Connection: keep-alive
Content-Length: 13
Content-Type: text/plain
Date: 2017-08-27 23:01:07
Server: Vistra-I St10 SW218 HW010
WWW-Authenticate: Digest realm="Vistra-I", qop="auth", nonce="a0c5d461f2b74b2b797b62f54200d125", opaque="0123456789abcdef0123456789abcdef"

Unauthorized

(Observe que a mensagem Unauthorized no corpo da resposta termina com um novo caractere de linha, por isso o comprimento do conteúdo: 13)

A mesma coisa, se o servidor responder com 403 ou 404 et cetera. Alguma idéia de como obter o corpo da resposta usando wget neste caso?

Editar 2017-09-22

Encontrada a opção --content-on-error no meu wget 1.17.1 (veja também manual do wget ).

Isso funciona no caso de, e. código de resposta 404 , mas não para 401 nor 5xx codes.

Para 401 , consulte este bug .

    
por Joe 21.09.2017 / 13:55

1 resposta

0

O cabeçalho de resposta pode ser recuperado usando a seguinte opção wget

wget --server-response http://10.5.1.1/bla 

Não estou ciente de nenhum optino que permita recuperar o corpo da resposta quando ocorrer um erro usando wget

Caso você queira o corpo da resposta com outro comando, use curl como está:

curl http://10.5.1.1/bla
    
por 21.09.2017 / 14:28

Tags