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 .